2017-11-06 25 views
0

はtelnetで制御することができる特定の機器があります。これは私が(PuTTyやTerminal経由で)しばらく行っています。NodeJSのTelnetサーバに接続

NodeJSでは、私は機器の制御を容易にするウェブインタフェースを作成しました。私は、telnetを介して送られた異なるコマンドに対して異なるbashスクリプトを実行することによってこれを行いました。これはうまくいきましたが、あまりにも組織化されていないと感じました。また、各コマンドのシェルスクリプトの混乱については言及していません。私はこれを行うより良い方法を探しています。

NodeJSから直接telnetサーバーに接続することを考えました。私は別のパッケージ(ネット、telnetクライアント、telnetストリーム、別のtelnetクライアントなど)を試しましたが、それらは必要なツールではありません。ここで

は私がTelnetクライアントパッケージ(他の人がこれを単なるバリエーションです)を使用してテストしていたサンプルコードです:手動で行う場合は

const telnet = require('telnet-client'); 
const server = new telnet(); 

// display server response 
server.on("data", function(data){ 
    console.log(''+data); 
}); 

// login when connected 
server.on("connect", function(){ 
    server.write("login <user> <pass>"); 
}); 

// connect to server 
server.connect({ 
    host: "172.16.0.1", 
    port: 9600 
}); 

を、「ログイン」要求の後、私は "見るべきですログインに成功しました "というメッセージが返ってきました。

このコードは間違っていますか?私はtelnetに精通しておらず、本当に助けに感謝します。

+1

telnet-clientライブラリを見ると、UNIXのシェルログイン用に構築されていると思われます。また、そのパッケージで 'server.write'メソッドが見つかりませんでした。もしあなたがカスタムプロトコルで通信しているようであれば、そのアドレスにtcpソケットをオープンするだけでよいでしょう。 [Here's an example。](https://gist.github.com/tedmiston/5935757) –

+1

そのパッケージのドキュメントからは、ログイン行を書き込む前にサーバ 'ready'イベントを待つべきだと思われます。パッケージの例を見てくださいhttps://github.com/mkozjak/node-telnet-client – niklon

+0

こんにちはniklon!出来た!本当にありがとう!どうやら、 "write"関数の最後に "\ r \ n"を追加することは、Sami Hultのオリジナルのアドバイスと同様に必要です。君たちありがとう! – Eyzi

答えて

0

誰かが同じ問題を抱えている場合に備えて、ここで答えを書きます。

私の問題は、サーバーに送信している文字列の最後に改行と改行を追加するだけで修正されました。

server.write("login <user> <pass>\r\n"); 
関連する問題