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

构建文件分发系统

1. 需求背景

对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。

2. 实现思路

首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。注意:环境必须一致,否则可能出现问题。

3. 核心命令

rsync -av --files-from=list.txt  /  [email protected]:/     这条语句用来批量同步文件

4. 文件分发系统的实现

rsync.expect 首先新建一个expect脚本,定义变量和功能

#!/usr/bin/expect

set passwd "hd792310"

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av --files-from=$file / [email protected]$host:/

expect {

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

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

}

expect eof

rsync.sh 其次新建一个SHELL脚本,循环IP列表来进行批量同步

#!/bin/bash

for ip in `cat ip.list`

do

echo $ip

./rsync.expect $ip list.txt

done

总结:要实现以上同步多台电脑,多个文件。需要4个文件配合:1.rsync.expect脚本

2.rsync.sh循环脚本

3.ip.list机器的IP列表

4.list.txt同步的文件列表

注意:实验机器3台,30为模板机器,60、70为目标机器。同步过程中出现错误提示:

[[email protected] ~]# bash rsync.sh

192.168.11.60

spawn rsync -av --files-from=file.list / [email protected]:/

The authenticity of host ‘192.168.11.60 (192.168.11.60)‘ can‘t be established.

RSA key fingerprint is a1:f3:fc:91:f7:94:5d:fa:8e:12:29:81:31:36:25:99.

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

Warning: Permanently added ‘192.168.11.60‘ (RSA) to the list of known hosts.

[email protected]‘s password: 192.168.11.70

spawn rsync -av --files-from=file.list / [email protected]:/

[email protected]‘s password:

building file list ... done

可以看出60在第一次登陆时出现问题,而70正常。重新执行一遍脚本,60也正常了。得到预期效果

怀疑"yes/no" { send "yes\r"; exp_continue}命令没有写全有关,有待查证。

时间: 2024-10-27 05:54:17

2.2-构建简易文件分发系统的相关文章

分发系统:构建简易文件分发系统

该脚本实现批量同步文件 [[email protected] ~]# cat rsync.expect #!/usr/bin/expect set passwd "root" set host [lindex $argv 0] set file [lindex $argv 1] spawn rsync -av --file-from=$file / [email protected]$host:/ expect { "yes/no" { send "yes

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

expect脚本当中去把一台机器的文件同步到另外一台机器上去,自动同步文件 [[email protected] sbin]# vim 4.expect ##编辑脚本 写入一下内容: #!/usr/bin/expect set passwd "hanshuo" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "pa

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

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脚本同步文件,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

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

  一.expect脚本同步文件 自动同步文件 ,把远程的文件同步到本机 cd /usr/local/sbin 1.脚本内容: #!/usr/bin/expectset passwd "123456"spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect {"yes/no" { send "yes\r" }"password:" { send "$pass

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

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 [[email protected] sbin]# vim 4.expect #!/usr/bin/expect set passwd "s5381561" spawn rsync -av [email protected]:/tmp/12.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:"