集群无密码登录脚本配置

#!/bin/bash
#author:dcc
#date:2018/05/25
#version:v1
#description:ssh-copy-id to every PC,you must appoint a NET ID

#check whether all the PC is up
if [ -z $1 ];then
	echo "Error:you must appoint a NET ID"
	exit 1
fi
test01=`echo $1 | awk -F . '{print $4}'`
if [ ! $test01 -eq 0 ];then
	echo "Error:please appoint a right NET ID"
	exit 2	
fi
tmp=$1
ID=${tmp%%0*}
for i in 159
do
	ping -c 3 -i 0.3 -W 1 $ID$i &> /dev/null
	if [ ! $? -eq 0 ];then
		echo "$ID$i is down;please up this PC"
		exit 3
	fi
done

#check whether install expect
rpm -q expect &> /dev/null
if [ ! $? -eq 0 ];then
        test01=`yum repolist|grep "repolist: "|sed -n 's/.*://p'`
        if [ "$test01" == "0" ];then
                echo "expect is no install and can not install expect because the yum is not usabled"
                exit 1
        else
                yum -y install expect >> /dev/null || echo "install failed" && exit 1
        fi
fi

#check /root/.ssh/id_rsa whether exist
if [ ! -f /root/.ssh/id_rsa ];then

#create ssh-key
expect<<EOF
spawn ssh-keygen
expect ":" { send "\r"}
expect ":" { send "\r"}
expect ":" { send "\r"}
expect ":" { send "\r"}
EOF

fi

#ssh-copy-id to all the PC in this NETWORK

for i in 159
do
expect<<EOF
	spawn ssh-copy-id root@$ID$i
	expect "password" { send "000000\r"}
	expect "#" { send "\r"}
EOF
done

#check
for i in 159
do
expect<<EOF
	spawn ssh root@$ID$i
	expect "#" {send "exit\r"}
	expect "#" {send "exit\r"}
EOF
if [ $? -eq 0 ];then
	echo "$ID$i success"
fi
done

  

posted @ 2018-05-25 19:49  JamesMI  阅读(99)  评论(0编辑  收藏  举报