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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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}命令没有写全有关,有待查证。


以上是关于2.2-构建简易文件分发系统的主要内容,如果未能解决你的问题,请参考以下文章

shell项目-分发系统-构建文件分发系统

shell(构建文件分发系统)

expect 构建分发文件系统

expect脚本同步文件,构建文件分发系统,批量远程执行命令

七十expect脚本同步文件expect脚本指定host和要同步的文件构建文件分发系统

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