小编The*_*ter的帖子

如何搜索存储在列表中的多个模式,直到找到所有项目或已经过了一定时间

我正在创建一个简单的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)

tcl expect

5
推荐指数
1
解决办法
591
查看次数

标签 统计

expect ×1

tcl ×1