【问题标题】:expect - telnet connection期望 - telnet 连接
【发布时间】:2018-11-07 02:27:18
【问题描述】:

我正在尝试创建一个简单的 telnet 连接脚本。 我产生 telnet 进程。根据版本的不同,它可能会或可能不会要求输入密码。

之后它要求用户名和密码以及规则接受。登录成功后提示输入命令。

但是,我写的东西不起作用。

#/usr/bin/expect -f
set IP [lindex $argv 0]
set timeout 10
set send_slow {10 .5}
log_user 1

spawn telnet -l cli $IP

expect {
    timeout {
        puts "Network Connection Problem"
        close
    }
    "Password:" {
        send -s -- "cli\r"
        exp_continue
    }
    "Username:" {
        send -s -- "admin\r"
        expect "Password:"
        send -s -- "admin\r"
        exp_continue
    }
    "(Y/N)?" {
        send -s -- "Y\r"
        exp_continue
    }   
}
expect "# "
send -s -- "show version\r"

运行脚本后,我通过登录和协议。显示提示后,脚本不会执行 show version 命令。几秒钟后光标闪烁我看到信息:

期望:生成 id exp6 未打开 在执行“期望”#“”时

有人可以纠正我的错误吗?我已经阅读了期望手册,浏览了示例脚本,但找不到任何解决方案。我敢肯定这很简单,但我在这里苦苦挣扎。

帮帮我,船长。

【问题讨论】:

    标签: linux tcl expect telnet


    【解决方案1】:

    你在这里有一个声明

    spawn telnet -l cli $IP
    

    将 telnet 会话的用户名指定为 cli。因此,将永远无法访问以admin 身份登录的代码。

    admin 的默认 shell 提示符是

    '# '
    

    cli的默认shell提示符是

    '$ '
    

    更改您的代码以处理查找任一 shell 提示符。

    【讨论】:

      【解决方案2】:

      你需要在那个expect命令中至少有一个分支not "exp_continue":将提示的模式作为expect命令的最后一个模式,没有任何操作:当expect看到提示时,expect 命令将结束,您的脚本可以继续执行。

      expect {
          timeout {
              puts "Network Connection Problem"
              close
              exit    ;# if you don't exit, your next command is "send" which will fail
          }
          "Password:" {
              send -s -- "cli\r"
              exp_continue
          }
          "Username:" {
              send -s -- "admin\r"
              expect "Password:"
              send -s -- "admin\r"
              exp_continue
          }
          "(Y/N)?" {
              send -s -- "Y\r"
              exp_continue
          }   
          "# "
      }
      send -s -- "show version\r"
      

      【讨论】:

        猜你喜欢
        • 2012-01-18
        • 2018-11-07
        • 2014-11-13
        • 1970-01-01
        • 2011-05-30
        • 2011-12-07
        • 2014-01-15
        • 2011-12-09
        • 2013-01-19
        相关资源
        最近更新 更多