删除“... [C [0k”从期望输出

时间:2017-08-17 23:41:50

标签: unix scripting expect csh

我怎么能不生成子字符串“... [C [C [C [0k”发布命令后通过期望脚本? 例如,我在expect脚本中有以下几行:

#set variables, parameters etc
...
spawn telnet $IP $PORT
expect -nocase "name:"
send -- "$USER\r"
expect -nocase "password:"
send -- "$PASS\r"
expect -re "$prompt"
send -- "terminal length 0\r"
expect -re "$prompt"
send -- "show vlan\r"
expect -re "$prompt"
send -- "logout\r"
expect eof

执行后,我收到了不受欢迎的子串:

Username:[C[C[C[C[C[C[C[C[C[0Kadmin
Password:[C[C[C[C[C[C[C[C[C[0K**************
switch#
[C[C[C[C[C[C[C[C[C[0Kterminal length 0
switch#[C[C[C[C[C[C[C[C[C[0Kshow vlan
...
#'show vlan' command result here
...
switch#[C[C[C[C[C[C[C[C[C[0Klogout
Connection closed by foreign host.

有没有人知道我怎么能不生成这些“[C [C [C [C [C [C [C [C [C [0K”]字符串?其他问题是我不能使用其他工具(sed,awk,tr等)删除字符串,我需要在第一时间不要生成。

1 个答案:

答案 0 :(得分:0)

期望不生成这些,它是您要连接的Cisco telnet服务。它发送转义序列来做改变颜色的事情。

您可以尝试在调用expect之前更改TERM变量,或者在spawn telnet命令之前在expect脚本中设置它。尝试设置TERM =未知。否则,请查看telnet程序支持的用于禁用转义序列的参数。