【发布时间】:2023-03-13 01:55:01
【问题描述】:
我正在尝试从 docker 容器中运行并获取有关 docker 容器的信息,为此我使用的是 Nexpect,但我发现了一个奇怪的错误:
exports.getIP = function(username, callback){
var nexpect = require('nexpect');
nexpect.spawn("ssh core@172.17.8.101 \"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 core@172.17.8.101 "docker inspect --format '{{ .NetworkSettings.IPAddress }}' test"
完美运行。
我也有非常相似的功能来使用 Nexpect 和 SSH 运行 Docker,并且运行良好。经过一些测试,我认为它与 \ 字符有关,但对于这个特定命令,我必须在字符串上使用引号。
【问题讨论】:
-
你试过从它的目录运行它吗?以
/usr/bin/ssh为例。 -
我刚刚尝试并得到:“错误:找不到命令:/usr/bin/ssh”,我在命令外壳上尝试过并且工作正常。