Robot Framework (SSHLibrary.Start Command または Execute Command) によってリモートでスクリプトに SSH 接続して開始するノードがあります。このリモート スクリプトは、外部から隠されている別のノードへの telnet 接続を開始します。この telnet 呼び出しは、ロボットに対するブロッキング イベントのようです。テストの実行に RIDE を使用していますが、動作が停止します。非効率的に停止信号を送信できます。ssh 内で telnet を生成することは可能ですか?
3 に答える
すべてが可能です。
シナリオを次のように説明しましょう: ロボット フレームワークはマシン A で実行されます。テストでは、A が ssh 経由でマシン B に接続され、B が telnet 経由でマシン C に接続されます。
あなたの質問から、テストがスタックするステップが明確ではありません。テストは実際に telnet 接続を確立しますか? telnet プロセスは実際に B で開始されますか?
ここでは、2 つの関連する問題を考慮する必要があります。
1 つ目は、Robot Framework が単一のスレッドでテストを実行することです。これは、キーワードが戻るまでテストが進まないことを意味します。テストの続行中に telnet セッションを開いたままにする場合は、SSHLibrary.start コマンドを使用し、 command を実行しないでください。
2 番目のポイントは、telnet セッションをプログラムで制御することです。Telnet クライアントは、ある種のバッチ実行をサポートする必要があります (たとえば、パスワードを要求したり、入力をフラッシュしたりしません)。テストから C でコマンドを発行できることを確認します。writeキーワードを使用して、C のコマンドをリダイレクトできるはずです。標準入力からコマンドのファイルを cat することで、Telnet クライアントが動作することを確認できます。何かのようなもの
cat commands_for_c.txt | telnet ...to..c...
こんにちは、ssh 接続を使用して、次のように Robot Framework で telnet コマンドを送信します。
SSHLibrary.Open Connection host=*** port=22 timeout=60 alias=ssh prompt=:~ >
SSHLibrary.Login username=*** password=*** delay=1s
SSHLibrary.Switch Connection index_or_alias=ssh
SSHLibrary.Write lxc-attach -n 0x1018
SSHLibrary.Read Until Prompt
SSHLibrary.Write telnet 1.2.3.4 2323
SSHLibrary.Read Until $
SSHLibrary.Write sendX 1115 1 0 0 0 0
SYSTEM Close SSH Connection