0

リモート端末で 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 "] "
4

2 に答える 2