Linux 双机互信脚本如下:
#!/bin/bash
#字颜色变量
BLACK="\033[30m" #黑色
RED="\033[31m" #红色
GREEN="\033[32m" #绿色
YELLOW="\033[33m" #黄色
BLUE="\033[34m" #蓝色
PURPLE="\033[35m" #紫色
SKY_GREEN="\033[36m " #天绿色
WHITE="\033[37m" #白色
#字背景颜色变量
BLACK_WHITE="\033[40;37m" #黑底白字
RED_WHITE="\033[41;37m" #红底白字
GREEN_WHITE="\033[42;37m" #绿底白字
YELLOW_WHITE="\033[43;37m" #黄底白字
BLUE_WHITE="\033[44;37m" #蓝底白字
PURPLE_WHITE="\033[45;37m" #紫底白字
WHITE_BLACK="\033[47;30m" #白底黑字
SKY_BLUE_WHITE="\033[46;37m" #天蓝底白字
#闪炼变量
FLICKER="\033[05m"
#头部
OUTPUT="echo -e"
#尾部
TAILS="\033[0m"
[ -x /usr/bin/expect ] || yum install expect -y
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
network_card=`ifconfig |egrep "ens33" |head -n 1 |awk -F ":" '{print $1}'|head -n 1`
Network=`ifconfig $network_card |awk '/broadcast/{print $2}' | awk -F '.' '{print $1"."$2"."$3}'`
files=/root/IP.txt
[ -f $files ] || touch $files
echo " " > $files
#只适用于局域网,保证同网段
read -p "搜索${Network}的起始地址:" start
read -p "搜索${Network}的结始地址:" end
#bs=`expr $b + 1`
for start_end in `seq $start $end`
do
(ping -c 3 "$Network".$start_end > /dev/null
if [ $? -eq 0 ];then
echo "$Network".$start_end >> $files
$OUTPUT $GREEN"获取局域网"$Network"."$start_end"在线主机" $TAILS
else
$OUTPUT $RED"获取局域网"$Network"."$start_end"不在线主机" $TAILS
fi)&
done
#节点的访问的机器无需再次进行认证,信息存在在known_hosts文件,如有可注释下面的代码
#MyIp=`ifconfig $network_card |awk '/broadcast/{print $2}'`
#IP=`cat /root/IP.txt |grep -v $MyIp |xargs`
IP=`cat /root/IP.txt |xargs`
for i in ${IP[@]}
do
/usr/bin/expect <<-EOF
spawn ssh-copy-id root@$i
expect {
"yes/no" {send "yes\n";exp_continue}
"password" {send "root\n"}
}
expect eof
EOF
#将对方的公钥传到本地
ssh root@$i 'echo |ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa'
#scp 复制过去的文件会覆盖之前的内容,为数据提供了更好的方便,host就是个中转站而已
scp -r $i:/root/.ssh/id_rsa.pub /root/.ssh/host
cat /root/.ssh/host >> /root/.ssh/authorized_keys
done
#将上线的主机公钥全部传给各个主机,让其全部免密登入
for io in ${IP[@]}
do
scp -r /root/.ssh/authorized_keys $io:/root/.ssh/authorized_keys
done
#删除多余文件,如果需要可以查看获取的IP地,址注释掉下面代码取消删除
[ -f $files ] && rm -rf $files