0
我想处理两个进程,它们必须同时运行。但是,我不断收到消息,指出其中一个进程不存在。在tcl/expect中处理多个进程
下面是一个最小的(不)工作示例(我不是真的FTP工作,但那将其他人运行的东西):
#!/usr/bin/expect
set spawn_id_bash [spawn /bin/bash]
set spawn_id_ftp [spawn ftp ftp.ccc.de]
send "anonymous\n"
expect {
"*Password*" {
puts "\nftp works"
}
default {
puts "\nftp defaulted"
}
}
set spawn_id $spawn_id_bash
send "uname\n"
expect {
"*Linux*" {
puts "\nbash works"
}
default {
puts "\nbash defaulted"
}
}
不幸的是,输出是:
[[email protected] linuxhome]$ /tmp/blub.tcl
spawn /bin/bash
spawn ftp ftp.ccc.de
anonymous
Trying 212.201.68.160...
Connected to ftp.ccc.de (212.201.68.160).
220-+-+-+-+-+-+-+-+-+
220-|o|b|s|o|l|e|t|e|
220-+-+-+-+-+-+-+-+-+
220-
220-
220-Please use HTTP instead:
220-
220-* http://cdn.media.ccc.de
220
Name (ftp.ccc.de:martin): 331 Please specify the password.
Password:ftp works
can not find channel named "4648"
while executing
"send "uname\n""
(file "/tmp/blub.tcl" line 19)
我在写这个例子的时候跟着书"Exploring Expect",我没有看到我做了什么不同。
我也使用send -i
和expect -i
没有任何的运气(错误消息已不存在,但在其他方面-i
似乎被忽略)尝试。
不错!接得好。 –