在我日常工作中,登陆服务器一般分为两个个步骤,通过ssh命令登陆跳板机,然后再通过跳板机登陆服务器。登陆跳板机又分为三个步骤,输入一长串用户名,再通过手机令牌查看动态密码,输入密码+动态码。这样每次登陆服务器都需要这么繁琐的步骤,在需要解决一个问题的时候,在登录上花的时间已经好几分钟,在同时登录多个服务器时更是让人头皮发麻,所以想写一个脚本,简化操作流程实现一键登录。
下面是第一个思路,通过bash脚本嵌套expect的方法,实现与命令行自动化交互,实现登录服务器,该办法在试验后发现有问题,造成该方法不能实施。后面会介绍具体问题
#!/bin/bash
salt="你的跳板机动态密码"
username="your username"
password="your password"
server="服务器名"
serverpass="服务器密码"
/usr/bin/expect <<-EOF
spawn ssh "$username"
expect {
"*yes/no*" {
send "yes\n";
exp_continue;
}
"*Password:" {
send "$password$salt\n";
exp_continue;
}
"*adadadw*" {
send "ssh $server\r";
exp_continue;
}
"*password:" {
send "$serverpass\r";
exp_continue;
}
}
interact
EOF
第二个办法:
上面的方法会导致登上服务器后无法进行其他操作,最终会退出,所以采取下面的办法直接用expect脚本执行,然后通过另一个bash脚本调用该expect脚本
login.sh
#!/usr/bin/expect
set salt [lindex $argv 0]
set

最低0.47元/天 解锁文章
1905

被折叠的 条评论
为什么被折叠?



