ssh 쉘 명령을 실행할 npm 스크립트를 작성하려고합니다. 현재는 osascript
명령을 실행하여 터미널 창을 열고 명령을 실행하여 작동합니다.npm 명령에서 ssh 쉘 스크립트를 실행하십시오.
현재 터미널에서 명령을 실행하도록 변경하고 싶습니다. 스크립트에는 shelljs
과 executive
이 모두 포함되어 있습니다. executive
을 사용하면 아무 일도 일어나지 않고 스크립트가 종료됩니다. shelljs
으로 내가 얻을 : 명령이 실행되는
Pseudo-terminal will not be allocated because stdin is not a terminal. the input device is not a TTY
은 예상대로 I 출력 명령 및 복사 및 붙여 넣기가 작동됩니다 ssh -i [ssh-key] -t [email protected][ip-address] eval $(base64 -D <<< [command in base64])
이
Base64로 명령이 sudo docker exec -i -t $(sudo docker ps -aqf "ancestor=' + containerName + '") /bin/bash
입니다 원격 컴퓨터로 sshing하고 docker exec
명령을 실행합니다.
-t
옵션을 제거하면 경고 메시지가 표시되지 않지만 콘솔에 출력이없고 스크립트가 멈 춥니 다 (출력이없는 백그라운드에서 명령을 실행한다고 가정 함). eval ...
부분을 제거하면 출력 단자가 서버에 있지만 입력 단자가 없을 때 볼 수있는 것처럼 보입니다.
동일한 터미널이나 새 탭에서이 명령을 실행하려면 어떻게해야합니까? 이 작업을 수행하기 위해 osascript
명령을 사용해야하는 경우에도 문제가 없습니다. 필자는 PhpStorm의 터미널에서이 명령을 실행할 것입니다. 여기에 편집
는 코드 블록의 :
var execCommand = 'sudo docker exec -i -t $(sudo docker ps -aqf "ancestor=nginx") /bin/bash';
var buffer = new Buffer(execCommand);
var encoded = buffer.toString('base64');
var cmd = "ssh -i " + this.keyPath + " -t [email protected]" + ip + " eval $(base64 -D <<< " + encoded + ") ";
shell.exec(cmd);
편집 2
내가 성공적으로 기계에 ssh를하고 명령 프롬프트를 얻을하지만 난을 얻고 있습니다 명령을 추가하면 the input device is not a TTY
오류가 발생합니다.
var docker_exec = 'sudo docker exec -it $(sudo docker ps -aqf "ancestor=' + containerName + '") /bin/bash';
var encoded = new Buffer(docker_exec).toString('base64');
var sshTerm = spawn('ssh', [
'-i',
this.keyPath,
'[email protected]' + ip,
'eval',
'eval $(base64 -D <<< ' + encoded + ')'
], {
stdio: 'inherit',
shell: true
});
sshTerm.on('exit', function() {
process.exit(0);
});
사용한 코드를 게시 할 수 있습니까? –
도움이되는 @ TarunLalwani 희망 – Ethan22