通过sshpass自动批处理ssh无密码访问

#!/bin/bash
logname=`date+%Y-%m-%d`
echo "#################################################################分####隔######################################################">>$logname.log
nl=`rpm -qa|grep "sshpass"|wc -l`
nm=`rpm -qa|grep "openssh"|wc -l`
[[ $nl -lt 1 ]] && { echo "请安装:sshpass插件!!!" >>$logname.log;exit; }
[[ $nm -lt 1 ]] && { echo "请安装插件:ssh软件包!!!" >>$logname.log;exit; }
for ip in `cat serip.txt|awk '{print $1}'`;do
port=`cat serip.txt|grep "$ip"|awk '{print $4}'`
ps=`cat serip.txt|grep "$ip"|awk '{print $3}'`
us=`cat serip.txt|grep "$ip"|awk '{print $2}'`
nu=`sshpass -p $ps ssh -o StrictHostKeyChecking=no -p $port $us@$ip "rpm -qa|grep sshpass|wc -l"`
sshpass -p $ps ssh -o StrictHostKeyChecking=no -p $port $us@$ip "if [ -e ~/.ssh/id_rsa ]||[ -e ~/.ssh/id_rsa.pub ];then rm -rf ~/.ssh/id_rsa*; fi && sed -i '/StrictHostKeyChecking/c StrictHostKeyChecking no' /etc/ssh/ssh_config && ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q && systemctl restart sshd.service "
if [ $nu -eq 0 ];then
sshpass -p $ps ssh -o StrictHostKeyChecking=no -p $port $us@$ip "yum -y install sshpass"
[[ $? -ne 0 ]] && { echo "$ip插件:sshpass未安装成功,请手动处理!!!" >>$logname.log;exit; }
fi
        for i in `cat serip.txt|awk '{print $1}'`;do
          port1=`cat serip.txt|grep "$i"|awk '{print $4}'`
          ps1=`cat serip.txt|grep "$i"|awk '{print $3}'`
          us1=`cat serip.txt|grep "$i"|awk '{print $2}'`
          sshpass -p $ps ssh -o StrictHostKeyChecking=no -p $port $us@$ip "sshpass -p $ps1 ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no -p $port1 $us1@$i" >/dev/null 2>&1
        
done
done
posted @ 2020-04-26 09:41  hhjwqh  阅读(452)  评论(0)    收藏  举报