期望脚本有错误的字符

时间:2016-11-18 21:39:55

标签: bash tcl expect

我的脚本ssh进入HP交换机并进行界面更改。我无法弄清楚导致输出中出现错误字符的原因(见粗体)。

我的剧本:

@Bean
public Module jodaTimeModule() {
    return new JavaTimeModule();
}

请参阅下面的错误输出: ; 209R &的; 209R ^ C

#!/usr/bin/expect
spawn ssh -o StrictHostKeyChecking=no user@switch
expect {
        "password:" { send "passwd\r" ; exp_continue }
        "Press any key to continue" { send " \r" ; exp_continue }
        "240#" { send "conf t\r" }
}
expect {
        "(config)#" { send "int 8\r" }
}
expect {
        "(eth-8)#" { send "enable\r" }
}
expect {
        "(eth-8)#" { send "wr mem\r" }
}
expect {
        "(eth-8)#" { send "end\r" }
}
expect {
        "#" { send "logout\r" }
}
expect eof

1 个答案:

答案 0 :(得分:1)

它可能是一个有控制的控制序列吗?唯一以R结尾的vt100序列是:

Cursor position report        CPR        ESC [ Pl ; Pc R

其中PlPc是光标位置的行号和列号的整数(请参阅http://www.vt100.net/docs/vt102-ug/appendixc.html)。

简单的解决方案可能是运行ssh,如:

set env(TERM) dumb
spawn env TERM=dumb ssh -o StrictHostKeyChecking=no user@switch

并且更难的方法是以某种方式剥离转义序列。 还可以尝试将dumb更改为vt100(当前设置为什么?)