2014-12-19 3 views
1

node.js 용 npm ssh2 모듈을 사용하여 ssh를 통해 sudo 명령을 실행해야합니다.노드에서 ssh2와 함께 pty를 사용하여 sudo 명령을 실행하십시오.

ssh.on('ready', function() { 

    //not working sudo command: 
    ssh.exec('cd /var/www/website && sudo mkdir myDir', { pty: true }, function(err, stream) { 
     if (err) throw err; 

     stream.on('exit', function(code, signal) { 

      console.log('exit code: ' + code + ' signal: ' + signal); 

      ssh.end(); 
     }); 
    }); 

}).connect({ 
    host: configuration.sshAddress, 
    port: 22, 
    username: configuration.sshUser, 
    password: configuration.sshPass 
}); 

누군가가 이것의 올바른 사용을 설명 할 수 : 은 내가 PTY 옵션을 사용하는 방법을 알아낼 수 없습니다 모듈의 설명서를 읽어?

답변

2

sudo 프롬프트에 대해 stream 출력을 구문 분석해야합니다. 그 시점에서, 당신은 stream.write(password + '\n');해야합니다. 이 모든 작업을 수행하는 대신 /etc/sudoers을 수정하여 로그인 한 사용자가 암호없이 특정 프로그램/스크립트/기타에 대해 sudo를 실행할 수 있습니다.

+0

나는 이것을 작동시킬 수 없다. 어떻게/어디서'stream.write (password + '\ n');'를 추가 할 것인가? – user1513388

0

stream.on('exit',.... 줄 바로 뒤에 stream.write(password + '\n');을 삽입해야한다고 생각합니다.

관련 문제