1. 程式人生 > >linux自動批量拷貝檔案

linux自動批量拷貝檔案

如果有一批機器同在一個區域網,這批機器所在地址段為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秒。