2016-10-14 8 views
0

私はnodejsをかなり使い慣れています。以下のように、ホスト、ポート、ユーザー名、パスワードを使って下のWebサーバーに接続して、応答時間を取得しようとしています。コマンドラインからファイルを実行しても出力が得られない場合、空のコマンドラインが表示されます。 ip、port、またはusername/pwdのいずれかを削除するとエラーが表示されます。私は間違って何をしていますか?nodejs - ssh2サーバ接続に出力やエラーがありません

var Client = require('ssh2').Client; 

     var conn = new Client(); 
     conn.on('ready', function() { 
      console.log('Client :: ready'); 
      conn.exec('uptime', function(err, stream) { 
      if (err) throw err; 
      stream.on('close', function(code, signal) { 
       console.log('Stream :: close :: code: ' + code + ', signal: ' + signal); 
       conn.end(); 
      }).on('data', function(data) { 
       console.log('STDOUT: ' + data); 
      }).stderr.on('data', function(data) { 
       console.log('STDERR: ' + data); 
      }); 
      }); 
     }).connect({ 
      host: '192.168.100.100', 
      port: 2122, 
      username: '[email protected]#[email protected]#[email protected]', 
      password: '[email protected]#[email protected]#!' 
     }); 


    // example output: 
    // Client :: ready 
    // STDOUT: 17:41:15 up 22 days, 18:09, 1 user, load average: 0.00, 0.01, 0.05 
    // 
    // Stream :: exit :: code: 0, signal: undefined 
    // Stream :: close 
+0

「npm ls」とは何ですか?それは 'ssh2-streams' v0.1.11を表示しますか、それともそのモジュールの古いバージョンですか? v0.1.11が表示されている場合は、 'connect()'オプションで 'debug:console.log'を設定し、その出力を要点に貼り付けたり貼り付けたりできますか? – mscdex

答えて

0

'error'イベントハンドラを他のハンドラよりも前に実際の接続オブジェクトに接続する必要があります。

var Client = require('ssh2').Client; 
var conn = new Client(); 

conn.on('error', function(err) { 
    console.log('SSH - Connection Error: ' + err); 
}); 

conn.on('end', function() { 
    console.log('SSH - Connection Closed'); 
}); 

conn.on('ready', function() { 
    // code to work with SSH 
}); 

conn.connect({ 
    host: '192.168.100.100', 
    port: 2122, 
    username: '[email protected]#[email protected]#[email protected]', 
    password: '[email protected]#[email protected]#!' 
}); 
+0

私はそれを試しましたが、エラーはありませんが、出力はありません。私は接続が行われていると仮定していますが、出力は空のコマンドラインであり、cmdの次の行に戻ります – LisaA

+0

@LisaAちょうどあなたが知っているように、私は 'ssh2'がメソッドチェーンを停止するまで接続オブジェクト上で上のコードサンプルのようにコードを設定しようとしましたか?何らかの理由で、私がconn.on( '')。on( '')。connect()を実行していた時など、何も起こりません。上記のように、それぞれの関数を別々に 'conn'に分割したとき、それはうまくいった。 – peteb

+0

conn.on( 'error'、function(err){ console.log( 'SSH - 接続エラー:' + err); }); conn.on( 'ready'、function(){ console.log( 'Client :: ready'); conn.exec( '稼働時間'、function(err、stream)){ if(err)throw err ; console.log( 'Stream :: close :: code:' + code + '、signal:' + signal); conn.end() ; }); stream.on( 'データ'、関数(データ){ はconsole.log( 'STDOUT:' +データ); }); }); })。 – LisaA

関連する問題