【问题标题】:SSH connection requests password before password can be sentSSH 连接需要密码才能发送密码
【发布时间】:2016-05-04 18:34:55
【问题描述】:

我有一个奇怪的问题,我试图通过 ssh 连接到脚本内的远程设备,以便可以向它发送命令,但奇怪的是,它在我什至可以调用期望命令之前询问 ssh 连接的密码。我的 sn-p 是这样的:

#!/usr/bin/expect
set PASS="password"
echo {$PASS}
ssh admin@10.3.0.1 -p 4118   #Firewall Device IP
expect {
"Password: "    
{send '$PASS\r'}
}

我得到的输出是这样的:

password
Password:

我不知道为什么会这样。

编辑: 我已经应用了@glenn jackman 建议的更改,新代码是:

    #!/usr/bin/expect
    set PASS "peak1234"
    puts "$PASS"
    ssh admin@10.3.0.1 -p 4118   #Firewall Device IP
    expect "Password :"    
    send "$PASS\r"

通过这些更改,我得到了错误:

    set: Variable name must begin with a letter.

【问题讨论】:

  • 学习一点tcl,否则你会很难正确使用expect。

标签: bash ssh expect


【解决方案1】:

你把 expect 和 sh 混淆了

#!/usr/bin/expect
set PASS "password"        ; ## no "="
puts $PASS                 ; ## no "echo", braces wrong
ssh admin@10.3.0.1 -p 4118
expect "Password: " 
send "$PASS\r"             ; ## single quotes have no meaning in expect/Tcl

【讨论】:

  • 您将从 Tcl 教程中受益:tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
  • 我应用了您建议的更改,但收到错误 set: Variable name must begin with a letter.
  • 那你没有采纳我的建议。请出示您的代码。
猜你喜欢
  • 2013-03-26
  • 2015-07-23
  • 1970-01-01
  • 2015-08-06
  • 2011-08-29
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
相关资源
最近更新 更多