天天看點

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

expect腳本自動同步檔案

#!/usr/bin/expect

set passwd "1q2w3e"

spawn rsync -av [email protected]:/tmp/12.txt /tmp/

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

如果嘗試取消最後一行,expect eof

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

會出現,還沒輸入密碼就退出的情況

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

/tmp目錄下也沒檔案

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

指定host和要同步的檔案,從本機到對方

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av $file root@$host:$file

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

檔案分發系統的實作

rsync.expect 内容

spawn rsync -aRv $file root@$host:$file

ip.list内容

[root@aminglinux01 sbin]# cat /tmp/ip.list

192.168.67.129

192.168.67.130

127.0.0.1

file.txt内容

[root@aminglinux01 sbin]# cat /tmp/file.txt

/tmp/12.txt

/root/shell/1.sh

/root/111/222/lll.txt

rsync.sh 内容

[root@aminglinux01 sbin]# cat rsync.sh

#!/bin/bash

for ip in 'cat /tmp/ip.list'

do

./rsync.expect $ip /tmp/file.txt

done

出現問題,暫未解決

expect 腳本同步檔案,指定host和要同步的檔案,建構檔案分發系統,批量遠端執行指令

發現問題點,修改标點符号,即可。忘了

的作用了<br/>#!/bin/bash<br/>for ip in

cat /tmp/ip.list` * 注意:就是這兩個不是單引号的标點符号

實驗結果:

[root@aminglinux01 sbin]# sh -x rsync.sh

++ cat /tmp/ip.list

  • for ip in '

    cat /tmp/ip.list

    '
  • ./rsync.expect 192.168.67.129 /tmp/file.txt

    spawn rsync -avR --files-from=/tmp/file.txt / [email protected]:/

    The authenticity of host '192.168.67.129 (192.168.67.129)' can't be established.

    ECDSA key fingerprint is d3:a8:9e:20:25:db:7c:43:d3:a7:48:5c:13:da:34:6b.

    Are you sure you want to continue connecting (yes/no)? yes

    Warning: Permanently added '192.168.67.129' (ECDSA) to the list of known hosts.

    [email protected]'s password: 1q2w3e

  • cat /tmp/ip.list

  • ./rsync.expect 192.168.67.130 /tmp/file.txt

    spawn rsync -avR --files-from=/tmp/file.txt / [email protected]:/

    [email protected]'s password:

    building file list ... done

    root/

    root/111/

    root/111/222/

    root/111/222/lll.txt

    root/shell/

    root/shell/1.sh

    tmp/

    tmp/12.txt

sent 473 bytes received 84 bytes 1114.00 bytes/sec

total size is 174 speedup is 0.31

  • cat /tmp/ip.list

  • ./rsync.expect 127.0.0.1 /tmp/file.txt

    spawn rsync -avR --files-from=/tmp/file.txt / [email protected]:/

    The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.

    Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.

驗證之後發現 檔案同步到67.130上了

再同步一次就成功了

sent 345 bytes received 65 bytes 820.00 bytes/sec

total size is 174 speedup is 0.42

  • cat /tmp/ip.list

sent 162 bytes received 15 bytes 354.00 bytes/sec

total size is 174 speedup is 0.98

exe.expect 執行指令

繼續閱讀