我试图阻止 tcpdump 命令在远程终端上运行。如果我 telnet 到终端,启动 tcpdump,然后发送 ^c,tcpdump 会停止而没有问题。但是,如果我 telnet 到同一个终端,启动 tcpdump,然后退出 telnet 会话,当我重新连接到同一个 telnet 会话时,我无法通过 ^c 停止 tcpdump。当我这样做而不是停止 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 "] "