SHELL 脚本 PING主机并进行ssh免密操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/env bash
home_dir=/home/yunwei
#判断yunwei账号的秘钥是否存在
[ ! -f $home_dir/.ssh/id_rsa.pub ] && ssh-keygen -P '' -f $home_dir/.ssh/id_rsa
&>/dev/null
#循环检查主机网络并且进行公钥推送
ip_txt=$home_dir/ip.txt
for i in `cat $ip_txt`
do
ip=`echo $i|cut -d: -f1`
pass=`echo $i|cut -d: -f2`
ping -c 1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo $ip >> secussip.txt
/usr/bin/expect <<-END &>/dev/null
spawn ssh-copy-id root@$ip
expect "(yes/no)" { send "yes\r" ;exp_continue }
expect "password:" { send "$pass\r" }
expect eof
END
else
echo $ip >> $home_dir/ip_down.txt
fi
done

remote_ip=`head -1 ~/secussip.txt`
ssh root@$remote_ip hostname
[ $? -eq 0 ] && echo "推送成功"
阅读剩余
THE END