Expect録音の奇妙な出力:これを削除する方法と理由は何ですか?

Expect録音の奇妙な出力:これを削除する方法と理由は何ですか?

だから最近DebianからFedoraに切り替えましたが、基本的なFedora BASHシェルで奇妙なことがわかりました。

コマンドを実行してautoexpect記録すると、次の種類の出力が生成されます。

# demo of the recording

autoexpect 
env > foo
Ctrl-D
# the script expect statement recording

# notice that expect recorded output prior to sending the command!

set timeout -1
spawn $env(SHELL)
match_max 100000

expect -exact "^[\]777;notify;Command completed;env > foo^[\\^[\]777;precmd^[\\^[\]0;chris@localhost:~^[\\^[\]7;file://localhost.localdomain/home/chris^[\\\[chris@localhost ~\]\$ "
send -- "env > foo\r"
expect -exact "env > foo\r
^[\]777;preexec^[\\^[\]777;notify;Command completed;env > foo^[\\^[\]777;precmd^[\\^[\]0;chris@localhost:~^[\\^[\]7;file://localhost.localdomain/home/chris^[\\\[chris@localhost ~\]\$ "

Debian の同様のレコードには、複数の処理ごみのようには見えません。

説得力のあるものとして、これはautoexpect明らかなシェル抽象化層のために単純なマクロを記録した後に完全に実行されない一流のLinuxディストリビューションです。

これは、私がFedoraシェルでやっていることがシェル内のシェルにあり、expect自動生成されたフラグ応答が実際に書き込まれるためです。今後 send -- "env > foo\r"記録されます。

また、リモートコンピュータをハックしましたが、fedoraこれは起こりませんでした。

ここで何が起こっているのでしょうか?

ベストアンサー1

Fedora bash プロンプトは Debian bash プロンプトとは異なります。

期待から次のことができます。

set prompt "$ "

spawn bash
send "unset PROMPT_COMMAND; PS1='$prompt'\r"

expect $prompt
send "env > foo\r"

expect $prompt
send "\x04"    ;# Ctrl-D
expect eof

おすすめ記事