shell脚本通过expect实现自动单边无密登录

最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用。于是结合expect的使用方法自行写了一个,通过验证可用。现在总结在这供需要的朋友参考。

代码如下:

1EXPECT=/usr/bin/expect 



 1$EXPECT <<EOF  
2spawn ssh-keygen -t rsa  
3expect "*ssh/id_rsa*" {  
4    send -- "\r"  
5    expect "*for no passphrase*"  
6    send -- "\r"  
7    expect "*passphrase again*"  
8    send -- "\r"  
9    exp_continue  
10}  
11
12EOF  
13
14iplist=`cat /root/ip.list`  
15for ip in $iplist  
16do  
17    $EXPECT <<EOF  
18    spawn ssh-copy-id root@$ip  
19    expect "*(yes/no)?*" {  
20        send -- "yes\r"  
21        expect "*?assword:*"  
22        send -- "$PASSWD\r"  
23    } "*?assword:*" {  
24        send -- "$PASSWD\r"  
25        exp_continue  
26    }  
27EOF  
28done  


上一篇:expect批量分发


下一篇:Mac设置终端ssh自动登录