利用expect腳本, 實現(xiàn)自動化將公鑰復(fù)制到多個遠程的主機

為了實現(xiàn)基于key的驗證,需要將本機的公鑰傳到多個遠程主機,傳給額過程中要輸入yes和密碼,如果遠程主機很多,人工一個個的輸入密碼浪費時間,expect腳本可以實現(xiàn)代替人工完成交互式的指令。

[root@centos7 app]#cat ip.txt 
zhang 172.18.21.106 123456
dufu 172.18.21.6 123456
[root@centos7 app]#cat ssh-copy-id.sh 
#!/bin/bash
#
cat /app/ip.txt |while read file;do
      username=`echo $file|cut -d ' ' -f1`
      ip=`echo $file|awk '{print $2}'`
      passwd=`echo $file|awk '{print $3}'`
expect << end  
---將expect利用多行重定向傳入當(dāng)前腳本
set timeout 100  
----設(shè)置多長時間跳出expect,建議時間設(shè)置的長一點,如果沒有這一
行,默認的時間也很短,大概5秒,所以這一行要加上,并且把時
間設(shè)置的長一點,遠程主機比較多,可以設(shè)置的時間更長一點
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$ip
expect {
"yes/no" { send "yes\n" ;exp_continue }  
---當(dāng)捕捉到y(tǒng)es/no信號時執(zhí)行yes\n命令,因為前面捕捉的信號為多個,所以后面要加上exp_continue
 "password" { send "$passwd\n" }
}
expect eof  
end
 done
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容