問題タブ [pexpect]

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.

0 投票する
4 に答える
5105 参照

python - Pexpect、2 番目のプロセスを生成しようとすると、ssh-copy-id の実行がハングする

いくつかの ssh-copy-id プロセスを生成する必要がある Python スクリプトを実行しています。これらのプロセスではパスワードを入力する必要があるため、PExpect を使用しています。

私は基本的にこれを持っています:

そして、別のプロセスを生成したいのですが、終了したかどうかに関係なく、これはもう気にしません。

そして、コードは2番目の「スポーン」でぶら下がっています

ただし、最初の呼び出しをコメントアウトすると、2 番目の呼び出しが機能するため、最初の呼び出しがまだ実行されているか、何かが機能していないという事実を推測しています。

さて、私ができなかったもう1つのことは、最初のものが停止するまで待つことです. 私は試しまし

:
child.terminate() - ハングします (パラメーターとして True と False の両方を使用)

何が起こっているのかについてのアイデアはありますか?
注: 私は Python の専門家ではなく、これまで pexpect を使用したことがないため、どんなアイデアでも大歓迎です。

ありがとう!


更新: これは間違いなく ssh-copy-id に関連しています。他のプロセスでは、返されなくても spawn がうまく機能するためです。また、明らかに ssh-copy-id は決して EOF を返しません。

0 投票する
2 に答える
13171 参照

python - python、pexpectでターミナルタイプを設定します

pexpectを使用してCLIプログラムを起動するスクリプトがあります。これは、いくつかのコマンドを入力できるプロンプトが表示されるシェルのように機能します。

私が抱えている問題は、このプログラムが色付きのプロンプトを使用していることだと思います。

これが私がすることです

これは出力です:

何らかの理由で、最初のプロンプトの色分けが問題を引き起こし、8行目のa.beforeが文字化けしているため、5行目のコマンドが実際に大量の出力を生成したことを確認しても、通常の印刷は機能しません。

誰かが問題が何であるかを知っていますか、または色を避けるためにpexpectで端末タイプを設定することは可能ですか?

私はtcshシェルを使用しています

0 投票する
4 に答える
3821 参照

python - Pythonプログラムから複数のPythonスクリプトを生成する方法は?

プログラムから複数のPythonスクリプトを生成(フォーク?)したい(Pythonでも記述)。

私の問題は、を使用して出力を収集するため、各スクリプトに1つの端末を割り当てることpexpectです。

pexpectos.execlpを使用してみましos.forkptyたが、どちらも期待どおりに機能しません。

子プロセスを生成し、それらを忘れたい(それらはいくつかのデータを処理し、私が読み取ってpexpect終了できる端末に出力を書き込みます)。

ライブラリ/ベストプラクティスなどはありますか?この仕事を成し遂げるために?

psなぜ私がSTDOUTに書き込み、そこから読み取るのかを尋ねる前に、私はSTDOUTに書き込みを行わず、の出力を読み取りますtshark

0 投票する
4 に答える
19101 参照

python - リモートコンピューターからコンソール出力を取得する方法(ssh + python)

「pythonssh」をグーグルで検索しました。pexpectssh(パスワード付き)を使用してリモートコンピュータにアクセスできる素晴らしいモジュールがあります。

リモートコンピュータが接続された後、他のコマンドを実行できます。ただし、Pythonで結果を再度取得することはできません。

私の場合、結果を得るにはどうすればよいps -efですか?

0 投票する
1 に答える
2873 参照

python - ctrl+z を pexpect に渡す

pexpect モジュールを使用して、生成された/子プロセスに特定のキーの組み合わせを渡すにはどうすればよいですか? telnet を使用していて、Ctrl+Z をリモート サーバーに渡す必要があります。

TNX

0 投票する
2 に答える
8527 参照

python - pexpect を使用するときに端末サイズを明示的に設定する方法

起動時に端末のサイズをチェックし、収まらない場合はすぐに終了する ncurses アプリがあります。

Linux では、デフォルトのサイズは 80x24 ですが、このアプリには少なくとも 25 が必要です。修正は簡単です。ncurses アプリを実行する前に、ターミナル エミュレーション ウィンドウのサイズを (X で) 変更するだけです。

pexpectでncursesアプリを自動化したいのですが、pexpectで起動すると必要以上に端末サイズが小さいと判断して動かず困っています。起動時に pexpect で明示的に端末サイズを指定する方法はありますか?

0 投票する
3 に答える
2613 参照

python - pexpectおよび「連鎖」関数呼び出しの問題

以下のクラスは、コマンドの実行と設定要素の更新を目的として、シスコのようなデバイスインターフェイスを操作するように設計されています。

現在のところ、クラスをインスタンス化し、ssh_to_aos_expsh関数を呼び出して有効な出力を取得できます(たとえば、コマンドが「showrunning-config」の場合に構成を取得します)。ただし、ssh_to_aos_config関数(関数を呼び出すssh_to_aos_expsh)を呼び出すと、pexpectタイムアウトエラーが発生します。

によって返されたpexpectオブジェクト(、、およびの'子' _ssh_connectssh_to_aos_expshを、ssh_to_aos_configによって返され_ssh_connectssh_to_aos_expshオブジェクトと比較しましたが、同じメモリ位置にあるように見えるため、続行できない理由がわかりません。 pexpectを使用してオブジェクトを操作します。ssh_to_aos_expshssh_toaos_config

私は最も洗練されたPythonコーダーではないので、関数間でpexpectオブジェクトを渡そうとしているときに、不注意でミスを犯した可能性があります。その場合は、誰かが私のミスを指摘していただければ幸いです。

0 投票する
1 に答える
916 参照

router - pexpectは、ルーターの出力を解析します

Ciscoルータにログオンし、showarpコマンドを発行するためのpexpect行がいくつかあります。次に、データを変数myARP(myARP = child.before)に保存して、ルーターを終了します。

次に、オブジェクトをループしようとすると(myARPの行の場合:print(lines)、情報は1行に1文字表示されます
l
i
k
e

t
h
i
s

申し訳ありませんが、これはおそらく非常に基本的な質問ですが、コマンドを手動で発行した場合に表示されるとおりに表示できないのはなぜですか?それはTelnet接続のストリーミングの性質と関係がありますか?これはどのように解決できますか?

0 投票する
4 に答える
75692 参照

python - ssh 処理用の python ライブラリ

Python で ssh コマンドを処理するための最初のコードを作成します。stackoverflow を検索したところ、 paramikopexpectなど、 ssh を介して渡されるコマンドを処理するために使用できる Python ライブラリがいくつかあることがわかりました。

特に、リモート サーバーからファイルのコンテンツを読み取り、ssh/scp を介してファイルをコピーし、リモート サーバーでスクリプトを開始した後にリモート サーバーから出力を取得する必要があります。

おそらく何人かの専門家は、どのライブラリが優れているかをアドバイスし、長所と短所を特定できますか?

0 投票する
2 に答える
628 参照

c++ - Linux 上の c++ で pexpect のようなプログラムを作成する

プロセスを起動してそのプロセスにパスワードを渡すことができる小さなプログラムのような pexpect を書く方法はありますか? 私は pexpect python ライブラリをインストールして使用したくありませんが、その背後にあるロジックを知りたいので、Linux システム API を使用して同様のものを構築できます。