ssh - 通过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 }
解决方案
如果这是您的整个脚本,那么在您发送密码后,脚本将结束,并与它建立 ssh 连接。做你的最后一行
expect eof
这将等待 ssh 连接正常结束。
推荐阅读
- sass - 运行旧的 gruntfile grunt-contrib-sass 错误
- wmi - Get-WmiObject Win32_ServerFeature 访问远程服务器角色和功能
- asp.net-core - 在食人鱼 cms 中显示帖子内容
- dictionary - 如何在 VBScript 的字典中使用对象?
- php - 从现有表创建模型 (Symfony3)
- python - 在 Python 中写入一个 .txt 文件,其类名不同(0 到 N)
- java - 共享首选项不会保存数据
- php - 在php中显示带有分页的搜索结果
- jquery - jQuery span 文本复制并用作宽度
- r - 如何在 R 中逐行读取 json 文件?