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 ~\]\$ "

데비안의 유사한 레코드에는 다중 처리 쓰레기처럼 보이는 것이 없습니다.

설상가상으로 이것은 autoexpect명백한 쉘 추상화 계층으로 인해 간단한 매크로를 기록한 후에 완전히 실행되지 않는 일류 Linux 배포판입니다.

이는 제가 페도라 쉘에서 하고 있는 작업이 쉘 내의 쉘에 있고 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

관련 정보