Linux记录-Shell自动化部署批量建立用户和批量SSH配置(转载)

if [  !  $# -eq 2  ] ; then
echo "请输入用户名和密码以空格分开!"
exit

else
name="$1"
passwd="$2"
fi


cat hosts | while read hosts
do

echo "正在$hosts上用户$name"
expect <<EOF
spawn  ssh $hosts "useradd $name; echo $name:$passwd | chpasswd"
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "dongliang\r" ;exp_continue  }
}

EOF

echo  "成功建立"

done
if [  ! $# -eq 2  ] ;then
echo "请输入用户密码以空格分开"
exit
else
#用户名
uname="$1"
#密码
passwd="$2"
fi

#执行检测并安装expect模块
ep=`rpm -qa | grep expect`

if [ -z $ep  ] ; then
 echo "检测到你的系统,没有安装expect模块,准备执行安装"
 sleep 2
 yum install -y expect

else
 echo "已经安装expect模块,3秒后,开始执行ssh文件同步"
 sleep 3
fi

#公钥无ssh认证模块
cat hosts | while read host
do

echo "当前正在向$host上传输ssh文件"
expect <<EOF
spawn  scp -r .ssh/  $host:/$uname
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$passwd\r" ;exp_continue  }
}

EOF

echo "当前正在$host上进行公钥认证....."
sleep 2
expect <<EOF
spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$passwd\r" ;exp_continue  }
}

EOF

echo "认证成功...."

done

#切换root权限进行hosts文件分发

echo "同步本机的hosts文件到各个机器上"

sleep 1

#同步本机的hosts文件到其他各个机器上

cat hosts | while read host
do

scp -r /etc/hosts $host:/etc/


done

echo "同步hosts文件完毕"
if [ ! $# -eq 2  ] ; then

echo "请输入用户名密码以空格分开"
exit
else

#用户的名字
uname="$1"
#用户的统一密码
pd="$2"
fi


#公钥无ssh认证模块
cat hosts | while read host
do

echo "当前正在向$host上传输ssh文件"
expect <<EOF
spawn  scp -r .ssh/  $host:/home/$uname
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$pd\r" ;exp_continue  }
}


EOF

echo "当前正在$host上进行公钥认证....."
sleep 2
expect <<EOF
spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$pd\r" ;exp_continue  }
}


EOF

echo "认证成功...."

done
posted @ 2019-09-30 10:52  信方  阅读(399)  评论(0编辑  收藏  举报