リモートデバイスのプロンプトをキャプチャします。Tclを使用してターミナルからプロンプトをキャプチャする方法またはプロンプトとカラーコードを一致させる方法は?
-regexp {[\$\#]\s*$} {
# capture the prompt
}
「[\ $#] \ s * $」は、カラーコードの入力には使用できません。
リモートデバイスのプロンプトをキャプチャします。Tclを使用してターミナルからプロンプトをキャプチャする方法またはプロンプトとカラーコードを一致させる方法は?
-regexp {[\$\#]\s*$} {
# capture the prompt
}
「[\ $#] \ s * $」は、カラーコードの入力には使用できません。
カラーコードは、文字ストリームでエスケープシーケンスとして送信されます。そのようなものとして、あなたがそこにいるなら、あなたはそれに合っている必要があります。それぞれのエスケープシーケンスは、;
で終わるさまざまな文字が続くESC文字(Esc,^[
、\u001b
)です(これは色設定のものですが、他にも複雑です)。はい、あなたはより複雑な正規表現とこれらを一致させることができますが、あなたが制御する単純なものにプロンプトを設定することは非常に簡単です。
# ...
expect "ssword: "
send $password\r
# Note, *NO* expect at this point as matching it is hard
send "PS1='> '\r"
expect -regexp {> $}
色付きのプロンプトは、人にとって十分ですが、スクリプト作成には不便です。オーバーライドすると、あなたの人生がずっと楽になります。
* nix、windowsなどのさまざまなプラットフォームで動作するにはこのスクリプトが必要です。" PS1 = '>' \ r "はこれらのプラットフォームでは動作しません。代わりにプロンプトをキャプチャするだけでいいですか? – user3837980
'expect -d'でスクリプトを実行して、詳細なデバッグ出力を有効にし、一致しない箇所を表示してください。期待は、プロンプトがどのように見えるかを正確に示すべきです。 –
私が時々使用する1つの手法は、ログイン時にプロンプトを明示的に設定することです。 'spawn ssh ...; "PS1 = '>' \ r"を送信します。 expect -re {> $} ' –