7月20日任務

20.31 expect腳本同步文件
20.32 expect腳本指定host和要同步的文件
20.33 構建文件分發系統
20.34 批量遠程執行命令

expect腳本同步文件

如果把expect eof註釋掉則表示登錄後立馬斷開,更別提傳輸文件了,所以要麼加expect eof,要麼在結尾加interact

註釋掉後和不註釋掉expect eof的兩種測試結果:

expect指定host和要同步的文件

補充(在3.expect中可以在$cm\r下面加一個timeout時間,默認爲10秒,如set timeout 5表示5秒,-1表示不停止)

 expect腳本指定host和要同步的文件

 

注意:①同步過程是從本地到遠程

           ②file的路徑一定要寫絕對路徑

測試:

構建文件分發系統

需求背景:大公司服務器數量龐大,需要實現多臺機器的自動同步,此時不能按照上述方法單個同步,需要建立一個分發系統,實現自動化批量同步

實現思路:首先要有一臺模板機器,準備分發系統,然後只需要使用expect腳本批量的把需要同步的文件上分別同步到目的機器上

核心命令:rsync -av --files-from=list.txt / root@localhost:/

rysnc.expect腳本

如上圖所示:定義host,file參數,(file同樣必須爲絕對路徑,否則無法同步),使用rsync必須要讓所有的密碼保持一致,否則無法同步,解決辦法重新設置所有密碼一致,(由於此操作會造成安全隱患,一旦expect腳本內容泄露,則會造成所有服務器密碼也泄露),還可以通過密鑰認證的方式省去密碼登錄帶來的潛在安全風險,同時默認SRC目錄存在,否則要加-avR來自動創建

創建文件集 /tmp/list.txt 並輸入需要同步的具體文件絕對路徑

創建需要同步的src IP地址 /tmp/ip.list 

編寫rysnc腳本

測試結果:

發現src下/root/shell.1txt不存在,加了rsync -R批量生成目錄,查看src下是否存在

批量遠程執行命令(類似於自動化)

①遠程登錄腳本

②for循環腳本

③測試成功

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章