nodejs ssh2处理持久shell中的数据响应

时间:2015-01-08 15:05:25

标签: node.js ssh

我想打开与ssh,类型命令的持久连接并处理它们的响应。命令可能会互相挂钩,例如更改目录然后运行另一个命令,因此exec似乎不是我理解的选项。使用php和phpseclib很简单,我可以这样做:

$ssh->sftp('cd /some/dir');
$response = $ssh->sftp('ls');

然而,对于ssh2和nodejs,似乎只有一个处理程序用于所有传入数据,因此无论我写什么,它都将返回到相同的函数,这使得很难确定什么是什么。特别是因为我无法控制回来的东西。如果我做了一个' ls'我会得到一个文件和文件夹的列表,但如果我做了一个grep或tail我会得到一个不同类型的列表,但我的处理程序不知道哪个是正确处理/解析它们。

我该如何解决这个问题?

也许我正在以错误的方式看待这个,只需要有人将PHP眼镜关掉。我的目标是构建一个小型本地应用程序,它将通过ssh连接到我的服务器,并执行复杂的任务,例如抓取我的访问日志并将所有数据解析为更易读的格式,或者创建新的站点可用配置文件和然后aiensite它,或者vardumping我的数据库和下载文件在本地支持它们等。

1 个答案:

答案 0 :(得分:0)

ssh.connection.shell用于以交互方式访问远程shell。对于做工作的连接&回来,shell不是正确的选择。 读这个, https://github.com/mscdex/ssh2/issues/210 您可以使用npm#ssh2,

执行相同的操作
conn.sftp(function(err, sftp) {
if (err) throw err;
sftp.readdir('foo', function(err, list) {
  if (err) throw err;
  console.dir(list);
  conn.end();
});

});