跳到正文
返回文章列表

使用expect自动登录

使用 Expect 脚本接收命令行参数或默认值,自动完成基于密码的交互式 SSH 登录。

expect是一个会话程序,根据内容反馈来做出应答,python也有一个相关库pexpect。用它进行自动登录,不是用authorized_key,而是把用户名密码写死在脚本里,来实现自动登录,毕竟总去上传key也不现实。

我在这儿修改了下,优先接受命令行参数,如果没有传则使用默认值。把脚本放到一个地方,在~/.profiles里加上一行alias mycommand='expect /yourpath',source之后就可以用mycommand运行脚本了。友情提示,写expect脚本要用它自己的语法,而不是bash的。

#!/usr/bin/expect
set timeout 10
set user [lindex $argv 0 ]
set passwd [lindex $argv 1 ]
set jump_machine_id [lindex $argv 2]
set addr 192.192.11.22
if {[llength $argv] == 0} {
set user default_username
set passwd default_passwd
set jump_machine_id 3
}
spawn ssh "$user@$addr"
expect {
timeout {
"Password" { send "$passwd\r"; exp_continue }
"server" { send "${jump_machine_id}\r"; }
}
}
interact

重要参考


原文发布于 SegmentFault

版权声明

除另有声明外,本站文章著作权归 quietin 所有,保留全部权利。除法律允许或事先获得书面许可外,严禁全文或部分复制、转载。经许可或依法引用时,须注明作者及原文链接。