首页 > 解决方案 > 通过expect向ssh连接插入密码

问题描述

我已经战斗了很长一段时间,但我无法强制使其工作......脚本在 HPUX 11.31 服务器上运行......尝试了谷歌并测试了许多选项,但没有一个工作......任何想法?好像输入了密码,但没有执行 ["enter not press"] 非常感谢您的指教。

主页:猫 MyScript.exp

#!/usr/local/bin/expect -d

set prompt {[#$] }
lassign $argv username server password

spawn /usr/bin/ssh $server -l $username ls -la /folder | /usr/bin/grep -c -i "MyFile"
expect {
 "*password:*" { send "$password\r" }
}

---- 调试运行 ----

Home: ./MyScript.exp MyUserName MyServer MyPassword

expect version 5.45
argv[0] = /usr/local/bin/expect  argv[1] = -d  argv[2] = ./MyScript.exp  argv[3] = MyUserName  argv[4] = MyServer  argv[5] = MyPassword
set argc 3
set argv0 "./MyScript.exp"
set argv "MyUserName MyServer MyPassword"
executing commands from command file ./MyScript.exp
spawn /usr/bin/ssh MyServer -l MyUserName ls -la /folder | /usr/bin/grep -c -i MyFile
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {18256}
expect: does "" (spawn_id exp4) match glob pattern "*password:*"? no
MyUserName@MyServer's password:
expect: does "MyUserName@MyServer's password: " (spawn_id exp4) match glob pattern "*password:*"? yes
expect: set expect_out(0,string) "MyUserName@MyServer's password: "
expect: set expect_out(spawn_id) "exp4"
expect: set expect_out(buffer) "MyUserName@MyServer's password: "
send: sending "MyPassword\r" to { exp4 }

标签: sshpasswordsexpect

解决方案


如果这是您的整个脚本,那么在您发送密码后,脚本将结束,并与它建立 ssh 连接。做你的最后一行

expect eof

这将等待 ssh 连接正常结束。


推荐阅读