利用expect实现自动登录服务器

1、建立文件abbr,用以保存目标服务器简称与全称的对应关系,例如:

yang@fengtao ~ $  more abbr
#product
pp1 p1.prodcut1.server.com
pp2 p2.prodcut1.server.com
pp3 p3.prodcut1.server.com
pp4 p4.prodcut1.server.com

2、建立可执行文件autologin.sh,例如:

yang@fengtao ~ $ more autologin.sh 
#!/usr/bin/expect

set target [lindex $argv 0]
spawn ssh  $target

expect {
 "Enter passphrase for key '/home/q/home/fengtao.yang/.ssh/id_rsa':" { send "yourpassword
" }
}
interact

其中,你自己需要替换的有以下两处:

Enter passphrase for key '/home/q/home/fengtao.yang/.ssh/id_rsa':     这里需要替换为提示你输入密码的提示语
yourpassword            你登录服务器需要的密码



3、建立可执行文件lg,用以接收参数,然后调用autologin.sh以实现自动登录:

yang@fengtao ~ $  more lg
#!/bin/bash

target=$(grep $1 abbr | awk '{print $2}')
echo $target

./autologin.sh $target

4、进行登录:

yang@fengtao ~ $  ./lg pp1

原文地址:https://www.cnblogs.com/yangfengtao/p/3382595.html