在我日常工作中,登陆服务器一般分为两个个步骤,通过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"