我正在尝试使用expect脚本登录路由器。现在,通常,当远程设备上的文本没有着色时,我的脚本工作正常。
但是当设备上的文本被着色时,脚本无法进行身份验证并登录设备。
我用谷歌搜索,我知道它与ANSI颜色代码序列有关。
#!/usr/local/bin/expect
set hostName [lindex $argv 0]
spawn telnet $hostName
expect "Username:"
send "userid\n"
expect "Password:"
send "pswdstring\n"
expect "*#"
send "quit"
以下是我的观察:
我可以手动成功登录设备。彩色文本仍然在控制台上打印,但在身份验证中没有问题。
当我将脚本输出重定向到文件时,我可以看到ANSI颜色代码
输出片段:
[33mNo/expired credentials.
[m[33mUsername: [muserid
[33mPassword: [mpswdstring
我知道颜色转义序列附加到输入的实际用户ID和密码并导致身份验证失败。我尝试发送一个退格符,但该dint也可以。
请帮助处理这些颜色代码。我是从Solaris机器执行脚本的。