問題タブ [telnetlib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 異なるログインプロンプトを決定するPython telnetlib
さまざまな IP アドレスをリストした csv ファイルを読み取ることで、複数のデバイスに順次ログインできる Python スクリプトを作成しました。そこから、スクリプトを介してデバイスに渡されるいくつかのコマンドの内容を含む各デバイスのファイルを出力します。だから私はかなり遠くまで来ました。私が直面している問題は、スクリプトが時々ハングすることです。これは、一部のデバイスのソフトウェア リビジョンが異なり、デバイスに渡される特定のコマンドをサポートしていないためです。私が注目している違いは、ログイン後のプロンプトです。たとえば、デバイス タイプ A にログインすると、xyz# のコマンド プロンプトが表示されます。デバイス タイプ B には、コマンド タイプ abc: があります。メーカーは同じですが、モデルやソフトウェアのリビジョンが異なるだけです。コマンド プロンプトによっては、スクリプトをハングアップさせずにそのデバイスで実行できるコマンドを知っています。
それが役立つ場合は、コードの一部を投稿できますが、本当に知りたいのは、これが可能かどうかです。もしそうなら、そうポインタ。私が試すかもしれないことについてのいくつかの提案。Python を数か月使用した後、これを行う方法が必要であることがわかりました。他の人の投稿に取り組み、実用的なソリューションを開発できるため、通常は投稿しません。しかし、私はこれに少し取り組んでいて、それをつなぎ合わせることができなかったので、私は助けを求めています.
-シェーン
編集
この時点では、まだコマンド プロンプトを決定するコードを書くことができません。少なくとも、telnet セッションが稼働している間は。telnet で接続し、いくつかのコマンドを実行して、セッションを閉じることができます。その後、結果をファイルに書き込むことができます。そして、そこからファイルを読んでプロンプトを決定します。しかし、理想的には、telnet セッションを開き、コマンドを実行してセッションがまだ開いている間にプロンプトを決定し、セッションが起動している間にそれを読み取り、プロンプトに基づいて特定のコマンドを実行できるようにしたいと考えています。
問題は、telnet セッションがまだアップしている間にコマンド出力を読み取ることができないことにあるようです。セッションを閉じてから、すべての出力をファイルに書き込む必要があります。次に、ファイルを読み取ってコマンド プロンプトを特定し、プロンプトに基づいて実行するコマンドを特定し、新しい telnet セッションを開いてそれらのコマンドを実行します。
telnet セッションを閉じ、データをファイルに書き込み、それを読み取ってプロンプトを判断し、スクリプトのログイン部分をもう一度ループバックする必要があるという事実を受け入れる必要がありますか? または、何か不足していますか?私の説明で明確になっているかどうかはわかりません。
python - telnetlib python の例
だから私はpython docsで与えられたこの本当に簡単な例を試しています:
私の問題は、read_all() の最後でハングすることです...何も出力されません。私はこれまでこのモジュールを使用したことがないので、続行する前に、この非常に基本的な例を機能させようとしています。ところで、私はpython 2.4を使用していますありがとう。
python - telnetlib で「resize pty」コマンドを送信することはできますか?
使用時に端末のサイズを変更する方法を探していtelnetlib
ます。Paramiko のresize_ptyを使用して SSH で同様の効果を達成しましたが、telnet プロトコルもサポートする必要があります。これは可能ですか (telnet には制御ストリームもありますか)?
telnetlib は必須ではないことに注意してください。より良いライブラリがあれば、喜んで使用します。
更新(背景の詳細): ネットワーク デバイスに接続するための Web ベースのインターフェイスを構築しています。フロントエンドは JS/AJAX を使用して構築されており、基本的にはキーストロークをバックエンドに送信し、そこから画面コンテンツを受け取るだけです。バックエンドは Python で記述されており、デバイスへの SSH/telnet セッションの開始、キーストロークの送信、および出力ストリームの取得を処理します。出力ストリームは、VT100 仮想端末 ( pyte ) を介して渡されます。次に、仮想スクリーンの内容がフロントエンドに送り返されます。この問題は、ユーザーがブラウザで端末の画面サイズを変更したい場合に発生します。SSHで送信するだけですresize_pty()
Paramiko を介して、pyte の仮想端末の画面サイズも変更します。しかし、telnet では、端末のサイズを変更する必要があることをデバイスに伝える適切なサイズ変更機能を見つけることができませんでした。これは可能ですか?
python - Pythonを使用したTelnetセッションでファイルを開いて検索する方法
次のコードを使用してサーバーにログインし、特定のディレクトリ(文字列を検索するログファイルが存在する場所)に移動します。私はこれをParamikoモジュール(ssh)でかなり簡単に達成しました。しかし、telnetlibモジュールには、これを実現するために私が見ている多くの関数がありません。ファイルを開いて特定の文字列を検索する方法を知っている人はいますか(問題のサーバーはTelnetログインのみを許可します-sshは許可しません)...ありがとう:
python - telnet を自動的に認証することは可能ですか?
telnetlibを使用しているときに、いくつかの興味深い変数に気付きました。
また、このページAUTHENTICATION
には、オプションを詳細に記述した RFC がいくつかリストされています。
私の理解が正しければ、telnet サーバーが認証をサポートしていれば、接続時に受信するはずIAC DO AUTHENTICATION
です。ただし、Linux マシンでtelnetdに接続しようとすると、このオプションが表示されないため、送信できませんIAC WILL AUTHENTICATION
。
私の理解は正しいですか?サーバーに認証を依頼する方法はありますか? telnet セッションを自動的に認証することさえ可能ですか? (「ログイン:」、「ユーザー名:」、「パスワード:」などのプロンプトを聞かずに)
python - Python telnetlib読み取り専用の出力「bs」
Python (純粋なPythonのみ) で telnet 自動化を実行しようとしています。関数 で読み取りの一部を出力しようとするとread_until
、一連の が表示bs
されます。これbs
は、backspace
文字のように であり、他のものではありません。:-)
tn
on 、Telnet
クラスのインスタンスで変更できる設定があるかどうか、またはこれを修正できるかどうかは誰にもわかりますか? それとも、これは私のホストが吐き返しているものですか? 私はtelnetlib
ライブラリでいくつかのグーグルを実行しましたが、人々がTelnet.read_until
関数から出力した例はあまり見たことがありません.
これは私のコードの縮小版です:
関係ないと思いますが、私は Windows で Python 2.7 を使用しています。
python - Python正規表現を使用した可変長ストリームレコード?
telnetlibを使用してデバイスに telnet 接続しています。デバイスは区切り記号なしで定期的に可変長レコードを返します。
すべてのレコードの先頭に日付と時刻があり、これを区切り記号として使用できます。
Telnet.expect(list[, timeout])を使用してレコードを分離するにはどうすればよいですか。
ストリームの例:
python - python telnetlib モジュール: 応答の読み取りと待機
このポスターと同様の問題があります。
応答とその下の私の応答に注意してください。
基本的に、telnetlib では、読み取り関数を呼び出したときに応答全体を読み取らせてくれません。
while ループで select.select([telnetobject],[],[]) を使用した後に telnet.read_very_eager() を呼び出して、読み取りが可能であることを確認すると、取得できるのは数文字だけです。これまでのところ、私が思いつくことができる唯一の解決策は time.sleep() を使用することですが、それはあまりにも粗雑な解決策であり、より適切なものを探しています。助けていただければ幸いです...
java - Pythontelnetlibのパフォーマンス
memcached内のすべてのキーをダンプするタスクがあり、これを行うためのスクリプトがstackoverflowにあります:python-memcacheを使用してmemcachedからすべてのキーと値をエクスポートする方法は? ニーズに合わせて少し変更しましたが、「実際の5m57.396s」でしたが、同じアルゴリズムのJavaバージョンでは「実際の0m5.190s」でした。Pythonバージョンのパフォーマンスのボトルネックはどこにあるのかを理解したいと思います。以下は、JavaおよびPythonバージョンのコードです
Python:
ところで、私はプログラマーではありません。だから私を悪いコードのせいにしないでください:)