linux 批量ssh認證
<pre name="code" class="sql">redis01:/root# cd .ssh
-bash: cd: .ssh: No such file or directory
redis01:/root# pwd
/root
redis01:/root# cd .ssh
redis01:/root/.ssh# ls
known_hosts
redis01:/root/.ssh# ls
id_rsa id_rsa.pub known_hosts
自動化ssh 腳本:
#root用戶初始化腳本,initroot.sh
if [ ! $# -eq 2 ] ;then
echo "請輸入用戶密碼以空格分開"
exit
else
ssh-keygen -t rsa
#用戶名
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
" ;exp_continue}
"*password:" {send "$passwd
" ;exp_continue }
}
EOF
echo "當前正在$host上進行公鑰認證....."
sleep 2
expect <<EOF
spawn ssh-copy-id -i .ssh/id_rsa.pub $host
expect {
"*yes/no" {send "yes
" ;exp_continue}
"*password:" {send "$passwd
" ;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文件完畢"
A->B B-> 相互信任 A 腳本需要ssh-keygen -t rsa B不需要
打開今日頭條,查看更多精彩圖片


※SQLServer中char、varchar、nchar、nvarchar的區別
※Hugo + github 搭建個人博客
TAG:程序員小新人學習 |