問題タブ [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.
python - Windowsスタイルの行末を返すpexpect
誰かがLinuxで使用したことがある場合、その関数を使用するとウィンドウスタイルの行末が返されるpexpect
ことに気づきましたか? これを取り除く方法を知っていますか?pexpect
readline()
python - pexpectの代替品はありますか?
リモートマシンで別のスクリプトを実行するために、python pexpect を使用してスクリプトを作成しています。通常は正常に動作しますがtime.sleep
、リモート スクリプトに があると失敗します。
リモート マシンにアクセスし、バックグラウンドでスクリプトを起動して終了したいと考えています。これは可能ですか?
誰かが代替案を提案したり、この問題を回避する方法を教えてもらえますか?
cron - Cron - 外部スクリプトの呼び出しに失敗しました (環境変数の初期化)
部分的な目標は、一定範囲のホストに定期的に接続し、一部のログを中央サーバーに再同期することであり、手動で呼び出すと問題なく動作します。
ただし、cron を介して呼び出されると、リモート rsync ステップで .EOF で終了します。
戻る
何が原因でしょうか?ありがとう
python - pexpectモジュールのsendlineメソッドの難しさ
面接の質問に文字列が含まれると予想される場合は、事前定義された回答を提供して面接プロセスを自動化する必要があります。
私はpexpect.spawnを使用して、子プロセスを開始し、面接を行います。
私のコードの一部は:
child.logfile=foutを使用して面接プロセスをファイルに保存しています
foutの一部は次のとおりです。
上で見たように、それは最初に新しい行と一致しているので、コメント「無効な入力:」です。つまり、同じ質問を2回行い、その答えとして「テスト」を受け入れます。
自分の答えを初めて受け入れるにはどうすればよいですか?
child.expectのパラメータ「timeout」に関連するものはありますか?
timeout = 0、timeout = -1などのオプションを使用してみましたが、何も機能していません。
python - Pexpect spawn.expect()は、プロセス出力の検出に信頼性がないようです
ServerManager
を使用して別のプロセスを監視およびインターフェースするクラス、がありますpexpect
。残念ながら、これを行うためのよりクリーンな方法はありません。問題のプロセスはAPIを提供していません。
プロセスのServerManager
出力を監視し、特定のパターンを認識したときにイベントをトリガーする必要があります。監視するそのようなパターンは複数あり、は現在pexpect
のspawn.expect()
スレッドをブロックするため、これらの「リスナー」は、パターンが一致するとメインスレッドと相互作用する個別のスレッドにスピンオフされます。
そのような例の1つは、ユーザーが接続/切断するのを待っています。
問題は、「接続」イベントと「切断」イベントが非常に信頼性の低い方法でトリガーされることです。およびのインスタンスを作成し、ServerManager
接続/切断を10回(各アクションの間に約10秒待機)、numberOfUsers
接続/切断のたびに確認しました。複数の試行にわたって、せいぜい約1/8の時間しか更新されていませんでした。
これはスレッドセーフの問題pexpect
ですか?プロセスとのインターフェースの唯一の手段がコマンドライン出力を監視することであるとすると、これらの種類のイベントを監視するためのより良い方法はありますか?
networking - モジュールを期待するよりも、ネットワークデバイスでリモートコマンドを実行するためのより良い方法
私は現在、ジュニパー、シスコのルーターとやり取りするpexpect python モジュールを使用して実装しています。子アプリケーションを生成し、「show version」などのコマンドを実行して、出力をログに記録します。
このプロセスを実行するためのより良い方法を探しています。スイッチ側で何かが変更された場合 (OS アップグレード後のプロンプトのスペースまたはコロン)、プログラムが機能しなくなるためです。ジュニパーにはそのような操作を実行するための API があると思いますが、シスコにはないと思います。これを HP などの他のスイッチにも拡張する必要があります。
これにアプローチできる一般化された方法はありますか?
pexpect よりも標準的なアプローチが存在する場合は、必要に応じて、デバイスごとに異なるコードを書くことも気にしません。
ありがとう
python - Python: Ubuntu で OpenSSH GUI パスワードプロンプトなしで pexpect を使用して scp を起動する方法は?
Ubuntuscp
でコマンドを自動化しようとしています。pexpect
ただし、「OpenSSH」というタイトルのパスワード GUI プロンプトが引き続き表示されます。この動作を無効にして、代わりにコマンド ライン プロンプトを使用するにはどうすればよいですか?
python - pexpect から Scilab を実行する
次のコードで pexpect モジュールを使用して scilab を実行しようとしています:
私がする時
プロットが表示されます。しかし、私がするとき
に続く
それは私に次の出力を与えます:
上記の出力をサニタイズして、上記の 3. 6. だけを取得するにはどうすればよいですか?
python - 別のウィンドウでの pexpect 出力
現在、テストスクリプトが多くの(3〜10)リモートコンピューター(SSHおよびいくつかのことを行う)に接続する必要があるプロジェクトで作業しています。pexpectを使い始めましたが、ボタンとしてはシンプルです。それは正常に動作します。
テスト中の通信を見たい。ログを画面にリダイレクトできることはわかっています。ただし、この場合、(別のコンピューターからの) ログが混在しています。私が望むのは、新しいスポーン オブジェクトごとに新しいターミナル ウィンドウ (またはコンソールなど) を開くことです。この場合、すべての通信を別のウィンドウで見ることができました。さらに、すべてのウィンドウで spawn.interact() の可能性を維持したいと思います。どうにかできる気がしますが、方法がわかりません。何らかのファイル ポインタ (またはパイプ) が何らかの方法で新しいウィンドウに渡される必要があると思います (?) (SecureCRT はこのようなことを知っています。コンソール ウィンドウにはタブがあり、それらに個別にアクセスできますが、これは商用製品です)。
または、問題をもっと簡単にさせてください。これを行うと、新しいウィンドウで新しいシェルを開くことができます。
p=Popen(["cygstart", "bash"])
スクリプト (親) からこのシェルに読み書きして、この新しいウィンドウで表示するにはどうすればよいですか?
あなたの一人が私を正しい方向に向けることができれば、本当に感謝しています。
そのような問題を見つけた人は誰もいなかったので、(Googleで)何を読むか、何を見つけるか教えていただければ十分です。環境はcygwinです。
前もって感謝します
br:drv
python - Fabric が自動的に (ユーザーが対話的にではなく) シェル コマンドと対話するようにするにはどうすればよいですか? pexpectと組み合わせる?
Fabricが自動的に (ユーザー対話型ではなく) シェル コマンドと対話するようにする手段を探す(パスワードの要求だけでなく、「標準入力/対話型オーバーライド」apt-get install -y
が利用できない場合にユーザー入力も要求する)。
この質問とこれらのFabric docsは、FabricがFabricプログラムを実行している人間のユーザーにのみ「対話性をプッシュ」できることを示唆しています。代わりに、人間の存在なしで完全に自動化しようとしています。解決すべき「本当の」現在の問題をまだ抱えておらず、起こりうる将来の障害に備えているだけです。
Fabric がすべての stdin/prompt を自動的に排他的に処理できない場合、 pexpect (または同様の代替メカニズム) と組み合わせるとおそらく便利ですか? 「どちらか一方」のようなものである必要がないことを願っています。同じプログラム/自動化で、該当する場合は、両方 (pexpect と Fabric) を活用してみませんか?