node使用ssh2自动登录远程服务器并执行操作

作为新时代的前端er,工作中不可避免的需要和服务器打交道,对于常规使用我们只需要使用xshell等工具连接远程服务器并执行我们需要的操作,但是总会有一些特殊的场景需要通过程序自动登录远程服务器并执行特定的操作,而本文介绍的ssh2刚好就能实现服务器远程登录且非常适用于前端开发者。

ssh2是一个纯js编写的node模块,官方文档:https://www.npmjs.com/package/ssh2,用于处理与服务器登录和执行相关的操作,使用该模块,前端开发者可以轻轻松松实现与远程登录相关的需求。

在开始使用之前我们先创建配置文件config.js,内容如下:

const { readFileSync } = require('fs');

module.exports = {
    host: '127.0.0.1',
    port: 22,
    username: 'username',
    password: 'password',
    // privateKey: readFileSync('/path/to/my/key')
};

然后我们通过ssh2远程登录服务器,并依次执行以下命令:

1、uptime 查看系统已运行的时间

2、pwd 查看当前目录的路径即用户的家目录

3、ls 列出当前文件及文件夹下的目录及文件

4、exit 退出

代码如下:

const { Client } = require('ssh2');
const config = require('./config');

const client = new Client();
client.on('ready', () => {
    console.log('client ready!');
    client.exec(`
        uptime
        pwd
        ls
        exit
    `, (err, stream) => {
        if (err) throw err;
        stream
            .on('close', () => {
                client.end();
            })
            .on('data', data => {
                console.log( data.toString());
            })
            .stderr.on('data', data => {
                console.log('err', data.toString());
            });
    });
});
client.connect(config);

将上面的代码保存为app.js,并使用命令node app.js执行,运行结果如下图所示:

可以看到我们用非常简单的代码就实现了远程登录服务器并执行命令的需求,那么ssh2的应用场景究竟有哪些呢?

1、项目自动部署,我们可以在项目编译/打包完成后远程登录服务器将编译/打包好的代码上传到服务器指定目录,实现项目的自动部署。

2、定时下载服务器重要数据的备份,实现数据的服务器和本地双保障。

3、定时备份本地的数据至远程服务器,随时随地可以下载数据使用

4、基于ssh2封装终端命令行工具

5、做端口转发等等

  • 支付宝二维码 支付宝
  • 微信二维码 微信

本文地址: /node-ssh2.html

版权声明: 本文为原创文章,版权归 逐梦个人博客 所有,欢迎分享本文,转载请保留出处!

相关文章