2014-02-10 3 views
0

시작될 때 자격 증명을 묻는 셸 스크립트가 있습니다.셸 명령을 실행하고 질문에 대답하십시오.

exec()을 사용하여 Node.js로 스크립트를 시작하고 질문에 따라 자격 증명을 보내고 싶습니다. 가능

var sys = require('sys') 
var exec = require('child_process').exec; 
function puts(error, stdout, stderr) { sys.puts(stdout) } 
exec("myscript", puts); 

인가 :

현재 내 코드는 무엇입니까?

n.b. 스크립트의 인수로 자격 증명을 전달할 수 없으며 지원하지 않습니다.

+0

어떤이는 exec와 예입니다? 운영 체제에 대한 자격 증명 또는 일부 서비스에 대한 자격 증명? 현재 사용자로 스크립트를 실행할 권한이 없기 때문에 권한 상승이 필요합니까? 어떤 종류의 OS를 사용하고 있습니까? – Mihai

+0

스크립트에 대한 자격 증명이 구체적입니다 (실제로 "자식"입니다). Window/OSx/Linux에서 작동해야합니다 (하지만 git에는 자체 쉘이 있기 때문에 중요하지 않습니다). –

+0

이 문제를 해결하기위한 한 가지 방법은 git 계정에 ssh 키를 사용하는 것입니다. 이렇게하면 자격 증명이 전혀 필요하지 않습니다. – Mihai

답변

1

프로세스의 표준 입력란에 입력해야합니다. 자격 증명

var exec = require('child_process').spawn; 
var child = spawn('script'); 

child.stdin.setEncoding('utf8'); 

child.stdout.on('data', function (data) { 
    if (data.toString() === 'enter the password:'){ 
    child.stdin.write('pass'); 
    return child.stdin.end(); 
    } 
    console.log('got some other data:'); 
    console.log(data.toString()) 
}); 

Similar to this question.

관련 문제