我想從一個碼頭工人容器內運行,並得到有關搬運工集裝箱信息,要做到這一點,我使用Nexpect,但我發現了一個奇怪的錯誤:爲什麼在Nexpect上的SSH命令不起作用?
exports.getIP = function(username, callback){
var nexpect = require('nexpect');
nexpect.spawn("ssh [email protected] \"docker inspect --format '{{ .NetworkSettings.IPAddress }}' " + username + "\"")
.expect(" ")
.run(function (err, stdout, exitcode) {
if (err) {
callback(err);
}
console.log("inside = " + stdout);
ip = stdout;
callback(null, ip);
});
};
這種方法的錯誤響應是「錯誤:找不到命令:SSH」
但是如果我手動shell中運行:
ssh [email protected] "docker inspect --format '{{ .NetworkSettings.IPAddress }}' test"
完美的作品。
我也有非常相似的功能來運行使用Nexpect和SSH的Docker,它工作正常。經過一些測試,我認爲它是\字符的東西,但對於這個特定的命令,我必須在字符串上使用引號。
你試過從它的目錄下運行呢?例如'/ usr/bin/ssh'。 –
我剛剛試過並得到:「錯誤:未找到命令:/ usr/bin/ssh」,我在命令shell中嘗試了它並開始工作。 – esdrasportillo