通过SSH

时间:2017-11-26 07:56:22

标签: node.js ssh

我有一台设备,我通过SSH连接到它。通常我使用Putty来执行命令。

我想使用NodeJS通过SSH执行一系列命令,而不是使用putty手动输入。

我开始寻找nodejs ssh客户端库,我尝试了所有这些 - 无法找到如何使用它们。

我想做的事情:

  • 通过SSH连接到我的设备
  • 键入" zh",然后输入
  • 我的设备输出"密码:"然后键入" demo"然后再次点击进入
  • 现在我可以执行" dir"等命令。或访问系统shell

我尝试了两个选项:

  1. 使用ssh2库(连接成功后的代码):

    var Client = require('ssh2').Client;
    
    var conn = new Client();
    conn.on('ready', function() {
        console.log('Client :: ready');
        conn.exec('en', function(err, stream) {
            stream.write('lab');
            stream.write('\n');
            stream.write('dir');
            stream.on('data', function(data) {
                console.log(''+data);
            });
            stream.on('close', function(data) {
                console.log('Strean closing: '+data);
            })
        });
    
  2. 输出:

    enter image description here

    1. 使用node-ssh

      ssh.connect({
          host: 'device-ip',
          username: 'user',
          password: 'pass'
      }).then(function (result1) {
          console.log('Connected!');
          console.log('Executing "en" with demo input');
          ssh.execCommand('en', { stdin: 'demo'}).then(function (enable) {
              console.log(enable.stderr);
              console.log(enable.stdout);
              console.log('Executing "dir"');
              ssh.execCommand('dir').then(function (result2) {
                  console.log('dir worked!');
                      console.log(result2.stderr);
                      console.log(result2.stdout);
                      res.send(result2.stderr);
              });
          })
      })
      
    2. 输出:

      enter image description here

      知道我在这里缺少什么/如果有更好的方法吗?

0 个答案:

没有答案