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

expect脚本同步文件

如果把expect eof注释掉则表示登录后立马断开,更别提传输文件了,所以要么加expect eof,要么在结尾加interact

7月20日任务

注释掉后和不注释掉expect eof的两种测试结果:

7月20日任务

expect指定host和要同步的文件

补充(在3.expect中可以在$cm\r下面加一个timeout时间,默认为10秒,如set timeout 5表示5秒,-1表示不停止)

7月20日任务

7月20日任务

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

 

7月20日任务

注意:①同步过程是从本地到远程

           ②file的路径一定要写绝对路径

测试:

7月20日任务

构建文件分发系统

需求背景:大公司服务器数量庞大,需要实现多台机器的自动同步,此时不能按照上述方法单个同步,需要建立一个分发系统,实现自动化批量同步

实现思路:首先要有一台模板机器,准备分发系统,然后只需要使用expect脚本批量的把需要同步的文件上分别同步到目的机器上

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

rysnc.expect脚本

7月20日任务

如上图所示:定义host,file参数,(file同样必须为绝对路径,否则无法同步),使用rsync必须要让所有的密码保持一致,否则无法同步,解决办法重新设置所有密码一致,(由于此操作会造成安全隐患,一旦expect脚本内容泄露,则会造成所有服务器密码也泄露),还可以通过**认证的方式省去密码登录带来的潜在安全风险,同时默认SRC目录存在,否则要加-avR来自动创建

创建文件集 /tmp/list.txt 并输入需要同步的具体文件绝对路径

7月20日任务

创建需要同步的src IP地址 /tmp/ip.list 

7月20日任务

编写rysnc脚本

7月20日任务

测试结果:

7月20日任务

发现src下/root/shell.1txt不存在,加了rsync -R批量生成目录,查看src下是否存在

7月20日任务

批量远程执行命令(类似于自动化)

①远程登录脚本

7月20日任务

②for循环脚本

7月20日任务

③测试成功

7月20日任务

 

相关文章: