gpt4 book ai didi

ssh - 使用expect通过ssh连接到交换机

转载 作者:行者123 更新时间:2023-12-02 02:08:34 27 4
gpt4 key购买 nike

我正在尝试运行脚本以使用 expect 连接到 Procurve 4204vl 交换机。
这是我创建的代码:

#!/usr/bin/expect -f
set timeout 20
spawn ssh -l user 192.168.0.10
expect "user@192.168.0.10's password:"
send "1234"
send "\r"
expect "Press any key to continue"
send "j\r"
send "conf"
send "\r"
send "no ip route 89.19.238.2 255.255.255.255 192.168.0.12"
send "\r"
send "exit"
send "\r"
send "exit"
send "\r"
send "exit"
send "\r"
expect "Do you want to log out [y/n]?"
send "y"

我只使用 expect script.exp 运行它,问题是我遇到了这些错误:
  • 路由没有删除
  • 脚本执行完成后,我在屏幕上收到以下错误:

    按任意键继续无效命令名称“y/n”
    执行时
    “是/否”
    从内部调用
    "expect "你想退出 [y/n] 吗?""
    (文件“script.exp”第 19 行)

  • 那么,我该如何解决这个问题呢?
    谢谢你。

    PS:如果我评论所有 "exit"行和注销问题,然后添加最后一行 "interact"命令,脚本工作正常。

    最佳答案

    对于没有删除的路由,程序给你什么输出?您是否看到路由器有任何错误?

    在expect 和Tcl 中,方括号是执行命令的语法,很像shell 中的反引号。最简单的解决方案是使用大括号而不是双引号来防止命令插值:

    expect {Do you want to log out [y/n]?}

    大括号就像 shell 中的单引号一样。

    关于ssh - 使用expect通过ssh连接到交换机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836972/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com