は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に精通しておらず、本当に助けに感謝します。
telnet-clientライブラリを見ると、UNIXのシェルログイン用に構築されていると思われます。また、そのパッケージで 'server.write'メソッドが見つかりませんでした。もしあなたがカスタムプロトコルで通信しているようであれば、そのアドレスにtcpソケットをオープンするだけでよいでしょう。 [Here's an example。](https://gist.github.com/tedmiston/5935757) –
そのパッケージのドキュメントからは、ログイン行を書き込む前にサーバ 'ready'イベントを待つべきだと思われます。パッケージの例を見てくださいhttps://github.com/mkozjak/node-telnet-client – niklon
こんにちはniklon!出来た!本当にありがとう!どうやら、 "write"関数の最後に "\ r \ n"を追加することは、Sami Hultのオリジナルのアドバイスと同様に必要です。君たちありがとう! – Eyzi