我正在创建一个简单的expect脚本,它将监视tcpdump的输出以获取多播地址列表.我想知道在预期超时之前是否从列表中的每个多播地址接收到数据包.
我有一个有效的解决方案,但它效率低下,我相信我没有充分利用expect和tcl的全部功能.无论如何这里是我目前的脚本:
set multicast_list {225.0.0.1 225.0.0.2 225.0.0.3}
send "tcpdump -i ixp1\r"
# If tcpdump does not start, unzip it and run it again
expect {
"tcpdump: listening on ixp1" {}
"sh: tcpdump: not found" {
send "gunzip /usr/sbin/tcpdump.gz\r"
expect "# "
send "tcpdump -i ixp1\r"
exp_continue
}
}
# Set timeout to the number of seconds expect will check for ip addresses
set timeout 30
set found [list]
set not_found [list]
foreach ip $multicast_list {
expect {
"> $ip" { …Run Code Online (Sandbox Code Playgroud)