测试环境分发2台主机
环境准备
| 主机名 |
ip |
密码 |
| ansible |
192.168.139.71 |
|
| web-server1 |
192.168.139.36 |
root |
| web-server2 |
192.168.139.30 |
root |
编写相应脚本
`生成密码`
[root@ansibel ssh]
`把对应密码放入到txt文件`
[root@ansibel ssh]
192.168.139.36 root
192.168.139.30 root
`脚本`
[root@ansibel ssh]
#!/bin/bash
while read ip passwd ;do
sshpass -p$passwd ssh-copy-id -i /root/.ssh/id_rsa.pub $ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]; then
echo "主机${ip}分发成功!!"
else
echo "主机${ip}分发失败@@@"
fi
done < ip_pwd.txt
`运行脚本`
[root@ansibel ssh]
主机192.168.139.36分发成功!!
主机192.168.139.30分发成功!!
`验证`
[root@ansibel ssh]
Last login: Fri Nov 17 11:28:12 2023 from 192.168.139.71
[root@web-server2 ~]
logout
Connection to 192.168.139.36 closed.
[root@ansibel ssh]
Last login: Fri Nov 17 11:49:21 2023 from 192.168.139.1
[root@web-server1 ~]
批量分发100台主机
生成IP和密码
[root@ansibel ssh]
#!/bin/bash
for i in {1..2}; do
for j in {1..50};do
IP="192.168.${i}.${j}"
PASSWD=`echo $RANDOM | md5sum |cut -c -12`
echo $IP $PASSWD >> ip_pwd.txt
done
done
`运行脚本生成100个IP和对应密码`
[root@ansibel ssh]
[root@ansibel ssh]
100
[root@ansibel ssh]
192.168.2.41 10ae913661c9
192.168.2.42 e43057e23ebc
192.168.2.43 9b0bd1cdd320
192.168.2.44 99b2f282271f
192.168.2.45 8bed04fa12ae
192.168.2.46 c8a538e3bf28
192.168.2.47 04ee751e4342
192.168.2.48 c282809f82a9
192.168.2.49 217854aa0ff4
192.168.2.50 92d7d1b5e644
编写ssh分发脚本
[root@ansibel ssh]
#!/bin/bash
while read ip passwd ;do
sshpass -p$passwd ssh-copy-id -i /root/.ssh/id_rsa.pub $ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ] then
echo "主机${ip}分发成功!!"
else
echo "主机${ip}分发失败@@@"
fi
done < ip_pwd.txt
`运行脚本`
[root@ansibel ssh]
+ read ip passwd
+ sshpass -p0c8f7e90b9d6 ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.1 -o StrictHostKeyChecking=no
+ '[' 1 -eq 0 ']'
+ echo 主机192.168.1.1分发失败@@@
主机192.168.1.1分发失败@@@
+ read ip passwd
+ sshpass -pacaa2db0f5be ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.2 -o StrictHostKeyChecking=no
+ '[' 1 -eq 0 ']'
+ echo 主机192.168.1.2分发失败@@@
主机192.168.1.2分发失败@@@
p机生成的所以分发失败