linux自動批量拷貝檔案
阿新 • • 發佈:2019-01-05
如果有一批機器同在一個區域網,這批機器所在地址段為192.168.100.1~192.168.100.256,使用者名稱均為test,密碼123123,如何批量將某個檔案拷貝到這批機器中。
首先請確保這批機器已經安裝了ssh服務並已成功執行;
其次在管理機器上(執行自動批量拷貝檔案的機器)執行命令expect,如果沒有此命令,需要通過系統源安裝expect包,如果系統源沒有此包,可在開源網站上下載expect的原始碼包並編譯安裝。
以下為自動部署的指令碼copy.sh:
#!/bin/bash
for ((i=$1; i<=$2; i++))
do
expect -c "
spawn scp -r test.txt [email protected]$i:~/桌面/
expect {
\"*assword\" {set timeout 3; send \"123123\r\";}
\"yes/no\" {set timeout 3; send \"yes\r\"; exp_continue;}
}
expect eof"
done
在命令列執行./copy 1 256
此指令碼將當前目錄下的test.txt檔案拷貝到IP地址為192.168.100.1~192.168.100.256的機器上;
在執行指令碼時,如果某些ip地址不存在,會出現長時間超時等待,如果想縮短超時等待時間,可配置檔案/etc/ssh/ssh_config中的ConnectTimeout 1,即設定連線超時時間為1秒。