linux shell 批量 免密码登陆

ip.txt文件存储的是所有主机的IP,每行一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
ps='GMLWHwfO9vfahqbJic'
key='ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdSnEVHBG1tOP9XwsZqRddym/5B0Jx5dOPewKmPePlEPWLHuaIeWICoe52X5BmfFh67pYrO4QTLwg3chdkrOZc3RJzqKQdwuVT+yBQGmfm/X4I3pXNs5a1AHItwu0XhzplqbKSOd0ChIQ3UEdsPU2MaxqXFt0TlM4wyMoMXiQC4BTQAnFwk//BURyCroqjHT285mY60LGXj46RcMlXryTTDXlvnZebvWIGjtPVzKPzxMfwfPRuCssU1gPMqWpb0dAMudmmJIt/5uoUDPs0V4WNuDLbugWh1sRlYOx0ncu4NOlRMSAobyQ2qbQiQMS1v2eYYrrBd8DcTRKfRwDUUFHb openstack'
for ip in `cat /root/ip.txt`; do
echo 'begin $ip';
set timeout 5
expect -c "
spawn ssh root@$ip
expect \"(yes/no)?\" {send \"yes\n\";exp_continue}
expect \"password:\" {send \"$ps\n\"}
expect \"]#\" {send \"echo $key >> /root/.ssh/authorized_keys\n\"}
expect \"]#\" {send \"exit\n\"}
expect eof
"
echo 'finish $ip';
done