Node.js shell命令在nodejs ssh2上不起作用
我正在使用以下库执行以下操作:Node.js shell命令在nodejs ssh2上不起作用,node.js,bash,shell,libssh2,Node.js,Bash,Shell,Libssh2,我正在使用以下库执行以下操作: 登录到altus实例 转到目录 这是我的代码: function postRun(url){ ssh.runMultiple(server, "sudo docker exec -it abcas /bin/bash", function(err,stdout,stderr,server,conn){ if(err) console.log(err); stdout.on('data', functi
function postRun(url){
ssh.runMultiple(server, "sudo docker exec -it abcas /bin/bash", function(err,stdout,stderr,server,conn){
if(err) console.log(err);
stdout.on('data', function(data){
executeCommands();
});
stderr.on('data', function(data){
console.log(''+data);
});
stdout.on('close',function(data){
conn.end();
});
});
}
function executeCommands(){
ssh.runMultiple(server, ['cd /dependencies/scripts'], function(err,stdout,stderr,server,conn){
if(err) console.log(err);
stdout.on('data', function(data){
ssh.exec(server, 'pwd', function(err,stdout,stderr){
if(err) console.log(err);
});
});
stderr.on('data', function(data){
console.log(''+data);
});
stdout.on('close',function(data){
conn.end();
});
});
}
我得到以下错误:
bash:line 0:cd:/dependencies/scripts:没有这样的文件或目录
我不确定我做错了什么。我在某个地方读到,我需要更换外壳,但看起来我已经在bash中了
我缺少什么,请说明。cd/”表示它指向根目录,因此您必须指定从根目录到父目录的完整路径。您试图输入一个不存在的目录。不要为此责备SSH或节点。。。错误消息告诉您SSH命令执行本身确实有效,但结果不成功(即非零返回代码)。验证路径/依赖项/脚本是否存在。错误来自bash,而不是ssh。看看是否可以从命令行下载cd/依赖项/脚本。。目录已存在,我可以将cd刻录到目录中@marekful这就是让我恼火的地方:-(我花了几个小时试图弄清楚发生了什么,我放弃了:-(我明白你的意思..问题是,目录确实存在。但是当我从另一个linux框中执行
postRun()
时..它应该进入“内部”
docker实例,然后执行“cd”
但它确实是从外盒中取出的cd
。(不在docker内)…不确定应该如何解决此问题..我应该使用ssh.runMultiple吗?
一个常见的初学者错误是不理解斜杠的意义。目录/dependencies
是否确实存在于根目录中?还是希望在主目录中找到一个目录dependencies
(注意缺少前导斜杠)?