我們已經有大約3000臺虛擬機& 450基於Linux的服務器的物理服務器(從9.x開始的幾乎沒有Ubuntu的服務器是Susu 8.X &其中大部分是RHEL,從4.x開始直到7.4 )在他們所有我需要添加與IP詳細信息到他們各自的/ etc/hosts文件的幾個主機名項。在創建腳本以更新/ etc/hosts文件中的主機名時會出現多個問題?
我已經全sudoers文件訪問的每個服務器,我可以使用 因此,我創建了一個與CSV文件中的主機名,用戶名密碼&格式上不同的用戶。其中包含所需的詳細信息登錄。文件名是「hostname_logins.csv」
我需要在每個服務器主機文件的上傳文件(即HOSTNAME_LIST到這些服務器,然後更新這些相同的細節。
我將使用一臺RHEL 6服務器運行此腳本(所有其他主機都可以從此服務器解析出&,但我已經確認了它。)
該腳本正在工作,但它要求接受主機密鑰一次,並要求密碼2次,但第三次它不要求密碼它會自動工作我猜,但需要確保它不要求接受主機密鑰或密碼。:
#!/bin/bash
runing_ssh()
{
while read hostname_login user_name user_password
do ssh -vveS -ttq rishee:[email protected] "sudo -S -ttq < ./.pwtmp cp -p /etc/hosts /etc/hosts.$(date +%Y-%m-%d_%H:%M:%S).bkp && sudo -S bash -c 'cat ./hostname_list >> /etc/hosts' && rm -f ./.pwtmp ./hostname_list"
done < hostname_logins.csv
}
while read hostname_login user_name user_password
do echo $user_password > ./.pwtmp
cat ./.pwtmp
scp -p ./.pwtmp ./hostname_list [email protected]$hostname_login:
runing_ssh
done < hostname_logins.csv
我需要將此作爲一個腳本,將在所有這些服務器上工作。提前致謝。
之前的while循環做IFS =,所以你在讀取命令期間正確分割數據 – MostWanted
我真的推薦ansible .... –