我試圖停止在遠程終端上運行tcpdump命令。如果我telnet到終端,啓動tcpdump,然後發送一個^ c,tcpdump停止沒有問題。但是,如果我telnet到同一個終端,啓動tcpdump,然後退出telnet會話,當我重新連接到同一個telnet會話時,我無法通過^ c停止tcpdump。當我這樣做而不是停止tcpdump時,似乎它只是退出telnet會話並且tcpdump繼續在遠程終端上運行。我在下面提供了我的腳本。任何幫助是極大的讚賞。如何使用期望從一個新的telnet會話遠程停止tcpdump
#!/usr/local/bin/expect -f
exp_internal 1
set timeout 30
spawn /bin/bash
expect "] "
send "telnet 192.168.62.133 10006\r"
expect "Escape character is '^]'."
send "\r"
expect "# "
set now [clock format [clock seconds] -format {%d_%b_%Y_%H%M%S}]
set command "tcpdump -vv -i trf400 ip proto 89 -s 65535 -w /tmp/test_term420_${now}.pcp "
send "$command\r"
expect "tcpdump: listening on"
# This works correctly. tcpdump quits and I am returned to the expected prompt
send "\x03"
expect "# "
send "$command\r"
expect "tcpdump: listening on"
# Exit telnet session
send -- "\x1d"
expect "telnet> "
send -- "q\r"
expect "] "
# Reconnect to telnet session
send "telnet 192.168.62.133 10006\r"
expect "Escape character is '^]'."
send "\r"
# This does not work as intended. The ^c quits the telnet session instead of stopping tcpdump
send "\x03"
expect "] "
send "ls\r"
expect "] "
嗨Donal,謝謝你的幫助,但你的解決方案沒有奏效。我編輯了我的問題,使其更清楚。當在同一個telnet會話中啓動tcpdump時,發送^ c確實有效。但是,當我連接到已經運行tcpdump的遠程telnet會話時,它仍然不起作用。而不是像預期的那樣停止tcpdump,似乎發送^ c退出telnet會話並將我返回到本地計算機。這使我更加困惑。如果你能提供任何更好的見解。 –