使用async/await和ssh2模块可以轻松实现通过SSH执行远程命令的功能。
首先,需要安装ssh2模块和bluebird模块,然后引入所需的模块和设置连接参数:
const ssh2 = require('ssh2'); const Promise = require('bluebird');
const connSettings = { host: 'example.com', port: 22, username: 'user', password: 'password' };
接着,编写一个包含exec方法的async函数:
async function execCommand(command) { return new Promise((resolve, reject) => { const conn = new ssh2.Client(); conn.on('ready', () => { conn.exec(command, (err, stream) => { if (err) reject(err); let output = ''; stream.on('close', () => { conn.end(); resolve(output); }).on('data', data => { output += data; }).stderr.on('data', data => { reject(data); }); }); }).connect(connSettings); }); }
最后,可以在程序中调用该函数并将需要执行的远程命令作为参数传递进去,例如:
(async () => { const output = await execCommand('ls -alh'); console.log(output); })();
这段代码使用async/await语法,调用前面编写的execCommand函数,传递'ls -alh'作为参数,然后将执行结果输出到控制台。