DAY11

分发系统介绍
分发系统:上线的shell脚本,核心expect脚本语言,实现传输文件,远程执行命令

上线:开发人员开发的代码,上传到在线服务器

首先准备一台模板机器,代码是准备上线的代码,使用expect脚本,借助rsync把这些代码推送到50台机器的过程

expect脚本远程登录
首先安装expect
DAY11

自动远程登录

DAY11
DAY11

加入执行权限
DAY11

执行expect脚本,成功登录
DAY11

expect脚本远程执行命令

DAY11

DAY11
expect “]*” ,当匹配到"]"时,执行命令

远程登录并执行命令然后退出
DAY11

查看执行结果

DAY11

expect脚本传递参数
DAY11
DAY11
执行脚本
DAY11
执行多条命令,用双引号括起来
DAY11
expect脚本同步文件

DAY11
DAY11

更改权限
DAY11

执行脚本

DAY11

查看执行结果
DAY11

expect eof需要加上,作用是等脚本命令执行完再进行退出

expect脚本指定host和要同步的文件
DAY11
DAY11

更改权限,执行脚本

DAY11

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

实现思路
首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。

核心命令
rsync -av --files-from=list.txt / [email protected]:/

创建rsync.expect脚本

DAY11

创建同步文件的列表文件
DAY11

vi /tmp/file.list

DAY11

创建同步IP的列表文件

vi /tmp/ip.list

DAY11

创建一个rsync.sh脚本(遍历一下 ip列表文件中的 ip地址)
DAY11

更改权限
DAY11

执行脚本
DAY11

DAY11

注:同步的时候,需要保证对方机器也有相同的路径,可以使用 -R创建路径;做分发系统的前提是需要保证同步的机器密码一致,这样会造成密码泄露的安全隐患,可以使用**认证。

批量远程执行命令
创建exe.expect

DAY11
DAY11
DAY11

创建exe.sh

DAY11

执行脚本
DAY11