gpt4 book ai didi

javascript - 与 node.js 的 ssh 持久 session

转载 作者:行者123 更新时间:2023-11-30 05:39:53 25 4
gpt4 key购买 nike

我正在使用 node.js,我正在尝试在 Web 浏览器中嵌入一个控制台以在远程服务器中工作。 Web 应用程序进行连接,因此用户无需执行 ssh username@host,而只需键入命令。

我已经尝试过 node.js 的 ssh2 模块和其他使用 ssh2 的模块。但我总是遇到同样的问题。每次我使用 exec() 以编程方式执行命令时,ssh session 都会重新启动。我会用一个例子更好地解释它。

> ls

返回主目录的内容,主目录中的目录之一是mydir

> cd mydir
> ls

再次返回我的主目录的内容,因为执行命令后 ssh session 关闭/重新启动。

任何可以完成这项工作的 node.js 库?甚至是不同于 JavaScript 的其他技术库?

编辑: 其他使用 node.js 模块 ssh-exec 进行说明的示例服务器必须使用 ssh 在其他机器上执行一些命令。服务器中的一个函数包含以下代码

var c = exec.connection('username@host.com'); // It takes the ssh key from the default location
exec('cd mydir', c).pipe(process.stdout);
exec('ls -lh', c).pipe(process.stdout);

如您所见,我没有在第一个 exec 后结束连接,但我获得的输出是主目录的内容而不是 mydir 目录的内容,因为 ssh session 在之后重置每个 exec.

最佳答案

node.js 的 ssh2 模块的维护者提供了解决方案。

使用 shell() 方法代替 exec() 方法。

shell() 方法与我们正在连接的服务器创建了一个交互式 session 。shell() 方法提供一个流作为其回调的参数(类似于方法 exec())。

就像使用exec()时一样,stream.on('data', function(data, extended) {...});可以用来获取命令的输出。但是,在这种情况下,要向您连接的机器提供命令(输入),您需要使用 stream.write(yourcommand+'\n');

附言。请随意编辑以提高答案的准确性。

关于javascript - 与 node.js 的 ssh 持久 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21453748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com