如何使用Tcl从终端捕获提示或如何将提示与颜色代码匹配?

时间:2016-11-11 21:45:47

标签: terminal tcl sysadmin

我想捕获远程设备的提示。

 -regexp {[\$\#]\s*$} {
       # capture the prompt  
 }

“[\ $#] \ s * $”对于带有颜色代码的提示不起作用。

1 个答案:

答案 0 :(得分:0)

颜色代码在字符流中作为转义序列发送。因此,如果你有它们,你需要匹配它们。每个转义序列都是ESC字符( Esc ^[\u001b),后跟各种以;结尾的字符(好吧,那就是颜色设置;还有其他人,他们有点复杂)。虽然是,但您可以将它们与更复杂的正则表达式相匹配,将提示设置为您控制的简单内容会非常容易。

# ...
expect "ssword: "
send $password\r
# Note, *NO* expect at this point as matching it is hard
send "PS1='> '\r"
expect -regexp {> $}

彩色提示对于人们来说已经足够了,但是他们对于编写脚本很尴尬。压倒一切会让你的生活更轻松。 (您也可以尝试将终端设置为不支持颜色的终端类型。)