Tcl Expect:如何向用户打印生成的进程的每个输出
我正在尝试编写一个expect脚本,部分命令将作为不同的用户执行。所以我需要生成一个kuu进程,然后在用户提供密码后向它发送命令。但是如何收集这些命令的输出并将其打印给运行expect脚本的用户呢Tcl Expect:如何向用户打印生成的进程的每个输出,tcl,expect,Tcl,Expect,我正在尝试编写一个expect脚本,部分命令将作为不同的用户执行。所以我需要生成一个kuu进程,然后在用户提供密码后向它发送命令。但是如何收集这些命令的输出并将其打印给运行expect脚本的用户呢 谢谢这可以通过使用以下方法来完成: proc outputUntilPrompt {} { global expect_out set prompt "ACT:*>*" set output "" while 1 {
谢谢这可以通过使用以下方法来完成:
proc outputUntilPrompt {} {
global expect_out
set prompt "ACT:*>*"
set output ""
while 1 {
expect {
-re "(\[^\r]*\)\r\n" {
append output $expect_out(buffer)
}
$prompt {
append output $expect_out(buffer)
break
}
}
}
return $output
}
send_user "$output"
使用
附加输出$expect\u out(缓冲区)
而不是设置输出“$output$expect\u out(缓冲区)”
;效果相同,执行速度更快。根据Donal Fellows注释更新代码以缩短执行时间。