Background
最近在給公司搭建大數(shù)據(jù)集群(Centos7)霞捡,需要做免密登錄坐漏,十幾臺機(jī)器,生成密鑰后需拷貝到相應(yīng)的機(jī)器碧信,不用shell腳本操作太麻煩了赊琳,就研究了下怎么腳本拷貝密鑰時自動輸入
yes
和密碼
,操作記錄如下:
1 下載expect
yum -y install expect
2 expect
基本指令介紹
spawn shell 執(zhí)行shell命令程序
expect "捕獲到shell 命令程序執(zhí)行之后輸出的字符串"
send "發(fā)送給 shell 命令程序的字符串"
3 shell腳本
我這里是要拷貝給十一臺服務(wù)器(Cloud01~Cloud11)
# 自動向傳入的IP地址拷貝密鑰的函數(shù)
copy_key () {
pwd='123'
# 開始 expect 解釋器程序
/usr/bin/expect <<EOF
# 設(shè)置捕獲字符串后砰碴,期待回復(fù)的超時時間
set timeout 30
# 發(fā)送公鑰給對方服務(wù)器
spawn ssh-copy-id root@$1
expect {
"yes/no" { send "yes\n"; exp_continue }
"password:" { send "${pwd}\n"}
}
expect eof
EOF
}
host='Cloud'
# 循環(huán)把每個 Host 傳遞給自動拷貝函數(shù)
for i in {01..11}
do
copy_key $host$i
done