在后台使用expect执行并行进程

时间:2015-10-27 12:36:48

标签: tcl expect

我有一个脚本,可以在不同的线卡parallay中执行一些命令,问题是脚本在6个线路卡上成功运行但是为了更多,它说send: spawn id exp10 not open

我正在telnet到脚本中的同一个ip然后连接到线卡,这里为每个会话脚本创建相同的期望spawn id可能是因为它说spaw id未打开,因为会话可能有过期的一些线卡已过期。

但我放了一些睡眠以确保没有后台会话到期仍然我看到超过6会话期望无法在后台进行。

脚本就是这个 -

for {set current_card 1} {$current_card <= $cv_total_cards} {incr current_card} {
    puts "Triggering execution on Card $current_card "
    eval exec ./exeCommandsOnLCCards.tcl "some card specific arguments" >/dev/null &
    sleep 5
    }
}
cat exeCommandsOnLCCards.tcl 
spawn telnet <telnet_ip>
expect "'^]'"
sleep 2
expect "login: "
send -- "root\r"
expect "assword: "
send -- "<password>\r"
expect "#"

如果有人遇到类似的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

请忽略这一点。脚本没有问题。 它是由于路由器的安全限制。如果我增加了允许的并行telnet会话,它就开始工作了。