文件分发系统

文件分发系统

一个机器上的多个文件要同步到多台机器上,该如何处理?

需求:将192.168.221.10机器上的/aa/aa.txt、/bb/bb.txt、/cc/cc.txt、/dd/dd.txt同步到192.168.221.20,192.168.221.30这两台机器上

  • 在192.168.221.10机器上创建aa/aa.txt、/bb/bb.txt、/cc/cc.txt、/dd/dd.txt
mkdir {/aa/,/bb/,/cc/,/dd/}
echo "aa" > /aa/aa.txt;echo "bb" > /bb/bb.txt;echo "cc" > /cc/cc.txt;echo "dd" > /dd/dd.txt
  • 实现文件同步的脚本one-more-rsync.sh
vim /usr/local/sbin/expect/one-more-rsync.sh
#!/usr/bin/expect
set passwd "root"
set user "root"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -avR --files-from=$file / [email protected]$host:/
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}
expect eof

chmod +x /usr/local/sbin/expect/one-more-rsync.sh
  • 建立一个同步的文件列表(one-more-rsync.sh中变量file)
vim /tmp/publicfilelist.txt
/aa/aa.txt
/bb/bb.txt
/cc/cc.txt
/dd/dd.txt
  • 建立一个发送文件目标机器的ip列表
vim /tmp/desip.txt
192.168.221.20
192.168.221.30
  • 写一个运行的脚本run.sh,调用one-more-rsync.sh
vim /usr/local/sbin/expect/run.sh
#!/bin/bash
publicfilelist="/tmp/publicfilelist.txt"
for desip in `cat /tmp/desip.txt`; do
        ./one-more-rsync.sh $desip $publicfilelist   //注意参数的顺序
done
  • 执行run.sh
[[email protected] expect]# bash run.sh
spawn rsync -avR --files-from=/tmp/publicfilelist.txt / [email protected]:/
[email protected]‘s password:
building file list ... done
aa/
aa/aa.txt
bb/
bb/bb.txt
cc/
cc/cc.txt
dd/
dd/dd.txt

sent 328 bytes  received 100 bytes  856.00 bytes/sec
total size is 12  speedup is 0.03
spawn rsync -avR --files-from=/tmp/publicfilelist.txt / [email protected]:/
The authenticity of host ‘192.168.221.30 (192.168.221.30)‘ can‘t be established.
ECDSA key fingerprint is SHA256:UiIDDUfExrEZLxrI8+z6PWjWsNCO2GTDDfTKpEhQaWY.
ECDSA key fingerprint is MD5:4e:79:bd:c6:bb:8d:b7:ee:1a:a4:cb:25:03:22:10:5f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.221.30‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
building file list ... done
aa/
aa/aa.txt
bb/
bb/bb.txt
cc/
cc/cc.txt
dd/
dd/dd.txt

sent 328 bytes  received 100 bytes  285.33 bytes/sec
total size is 12  speedup is 0.03

原文地址:http://blog.51cto.com/13480443/2088161

时间: 2024-10-07 05:53:41

文件分发系统的相关文章

2.2-构建简易文件分发系统

构建文件分发系统 1. 需求背景 对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 2. 实现思路 首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可.注意:环境必须一致,否则可能出现问题. 3. 核心命令 rsync -av --files-from=list.txt  /  [email protected]:/     这条语句用来批量

20.31 expect脚本同步文件;20.32 expect脚本指定host和要同步的文件;20.33 构建文件分发系统;20.34

20.31 expect脚本同步文件 自动同步文件 1. 同步远程机器hao2上/tmp/12.txt文件 到本机/tmp/下: [[email protected] ~]# vim 4.expect 添加内容: #!/usr/bin/expect set passwd "admin" spawn rsync -av [email protected]192.168.211.129:/tmp/12.txt /tmp/ expect { "yes/no" { send

shell(构建文件分发系统)

1. 需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台.所以,自动同步文件是至关重要的. 2. 实现思路首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可.3. 核心命令rsync -av --files-from=list.txt  /  [email protected]:/4. 文件分发系统的实现vim  rsync.expect #!/usr/bin/expe

expect脚本同步文件、指定host和要同步的文件、构建文件分发系统、批量远程执行命令

expect脚本同步文件 1.自动同步文件 [[email protected] shell]# vi 4.expect 增加如下脚本内容: #!/usr/bin/expect set passwd "123456" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send &

expect脚本同步文件、expect脚本指定host和要同步的文件、构建文件分发系统、批量远程执行

20.31 expect脚本同步文件 自动同步文件 #!/usr/bin/expect set passwd "rootroot" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r"} } expect eof 执行 [[ema

expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

20.31 expect脚本同步文件#!/usr/bin/expectset passwd "liang.123"spawn rsync -av [email protected]:/tmp/12.txt /tmp/ 将远程的/tmp/12.txt同步到本地的机器上 expect {"yes/no" { send "yes\r"} 第一次会提示yes或no"password:" { send "$passwd\r&q

expect 脚本同步文件,指定host和要同步的文件,构建文件分发系统,批量远程执行命令

expect脚本自动同步文件 #!/usr/bin/expectset passwd "1q2w3e"spawn rsync -av [email protected]:/tmp/12.txt /tmp/expect {"yes/no" { send "yes\r"}"password:" { send "$passwd\r" }}expect eof 如果尝试取消最后一行,expect eof 会出现,还

expect脚本同步文件 expect脚本指定host和要同步的文件 构建文件分发系统 批量远程执行命令

自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -av [email protected]192.168.133.132:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect eof 指定host和要同步的文件

expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行

expect脚本同步文件 自动同步文件 #!/usr/bin/expect set passwd "目标机器密码" spawn rsync -av [email protected]目标机器ip:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" }}expect eof 然后赋予权限chmod