TCL expect 正则表达式

8


我正在尝试编写一段脚本,通过TCL/Expect从一个系统爬升到另一个系统。这对我来说是有效的。我需要一个正则表达式,其中将 expect "$ "expect "# " 结合在一起,以便可以包括路径中任何带有提示符的系统。

#!/usr/bin/expect
# Using ssh from expect

log_user 0
spawn ssh test@192.168.2.24
expect "sword: "
send "test\r"
expect "$ "
send "ssh beta\r"
expect "# "
send "uptime\r"
expect "# "

set igot $expect_out(buffer)
puts $igot
2个回答

13

使用这个:

expect -re {[$#] }

实现这个的关键是:添加-re标志以匹配正则表达式,并将正则表达式放在{大括号}中,以避免被替换。


8
更通用的解决方案:
set prompt "(%|#|\\\$) $"
expect -re $prompt

这个模式匹配%#$
第二个美元符号确保只在输入的结尾匹配该模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接