Nodejs 如何使用node执行远程linux服务器命令
Nodejs 如何使用node执行远程linux服务器命令
RT。听说用Java能使用SSH+SCP实现在代码中直接执行远程linux命令,node 有没有类似的功能,或者工具?
5 回复
直接调用 Sholl 命令行不?
{exec} = require "child_process"
exec "ssh user@0.0.0.0 'ls'"
firstly, google:ssh login without password. get the result and try
我是添加了公钥的, 倒忘了这点… 如果加公钥可以的话
要在 Node.js 中实现从本地机器执行远程 Linux 服务器上的命令,可以使用 ssh2
和 node-ssh
这样的库来通过 SSH 连接到远程服务器并执行命令。
示例代码
这里以 node-ssh
库为例:
- 首先安装
node-ssh
:
npm install node-ssh
- 然后编写脚本执行远程命令:
const NodeSSH = require('node-ssh');
const ssh = new NodeSSH();
ssh.connect({
host: 'your_remote_server_ip',
username: 'your_username',
password: 'your_password' // 或者你可以使用 privateKey 文件
})
.then(() => {
return ssh.execCommand('ls -la')
.then((result) => {
console.log(result.stdout);
console.log(result.stderr);
});
})
.catch((err) => {
console.error('连接失败或命令执行错误', err);
})
.finally(() => {
ssh.dispose(); // 断开连接
});
解释
- 安装依赖:首先需要安装
node-ssh
,这是一个用于建立 SSH 连接的库。 - 创建实例:通过
new NodeSSH()
创建一个NodeSSH
实例。 - 连接服务器:使用
ssh.connect()
方法连接到远程服务器。你需要提供服务器 IP、用户名以及密码(或私钥路径)。 - 执行命令:通过
ssh.execCommand()
执行远程命令。这里我们执行了ls -la
命令,并获取其输出。 - 处理结果:命令执行后,可以通过
.then()
处理标准输出和标准错误。 - 断开连接:最后使用
ssh.dispose()
断开与远程服务器的连接。
这种方式使得在 Node.js 中执行远程命令变得非常简单,只需几个步骤即可完成。