最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用。于是结合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