标签:expect
20.31 expect脚本同步文件·自动同步文件
[root@localhost sbin]# chmod a+x 4.expect [root@localhost sbin]# ./4.expect spawn rsync -av root@192.168.65.129:/tmp/12.txt /tmp/ root@192.168.65.129's password: receiving incremental file list 12.txt sent 30 bytes received 84 bytes 76.00 bytes/sec total size is 5 speedup is 0.04 [root@localhost sbin]# cat /tmp/12.txt 1212
(脚本结尾需要加 expect eof 或者 interact )
20.32 expect脚本指定host和要同步的文件
·指定host和要同步的文件
(file一定要写绝对路径)
[root@localhost sbin]# chmod a+x 5.expect [root@localhost sbin]# ./5.expect 192.168.65.129 "/tmp/12.txt" spawn rsync -av /tmp/12.txt root@192.168.65.129:/tmp/12.txt root@192.168.65.129's password: sending incremental file list sent 31 bytes received 12 bytes 86.00 bytes/sec total size is 5 speedup is 0.12
20.33 构建文件分发系统
·需求背景对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。
·实现思路首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。
·核心命令rsync -av --files-from=list.txt / root@host:/
·文件分发系统的实现
·rsync.expect 内容
·/tmp/list.txt内容
·ip list 文件:/tmp/ip.txt
192.168.65.129
·rsync.sh内容
[root@localhost sbin]# chmod a+x rsync.expect [root@localhost sbin]# sh -x rsync.sh ++ cat /tmp/ip.txt + for ip in '`cat /tmp/ip.txt`' + echo 192.168.65.129 192.168.65.129 + ./rsync.expect 192.168.65.129 /tmp/list.txt spawn rsync -av --files-from=/tmp/list.txt / root@192.168.65.129:/ root@192.168.65.129's password: building file list ... done root/ root/111/222/ root/111/222/test.txt root/shell/ root/shell/01.sh tmp/ tmp/12.txt sent 369 bytes received 81 bytes 900.00 bytes/sec total size is 71 speedup is 0.16
(在129机器上也可以查看到同步过去的文件)
·思路:
执行 rsync.expect 脚本并且要传递两个参数
而其中之一是多个ip中的一个,把 ip 写到一个文本中,for 循环依次去读一个ip,并传递到脚本中去
在 shell 脚本中写此 for 循环,可以执行
把需要同步的文件绝对目录写入到 list.txt 中,这样可以将需要同步的目录依次同步到 ip.txt 中的机器
20.34 批量远程执行命令
·exe.expect 内容
·exe.sh 内容
·执行脚本
[root@localhost sbin]# sh exe.sh 192.168.65.129 spawn ssh root@192.168.65.129 root@192.168.65.129's password: Last login: Thu Apr 26 00:10:01 2018 from 192.168.65.128 [root@localhost ~]# w;free -m;ls /tmp 00:13:10 up 1:35, 2 users, load average: 0.01, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.65.1 22:38 23:42 0.23s 0.23s -bash root pts/1 192.168.65.128 00:13 0.00s 0.05s 0.03s w total used free shared buff/cache available Mem: 976 589 116 6 271 212 Swap: 2047 0 2047 12.txt systemd-private-606af9ac8a8c48d8bd2a5d7938fec6e8-chronyd.service-Tv9azy alex.sock systemd-private-606af9ac8a8c48d8bd2a5d7938fec6e8-vgauthd.service-aii2pH mysql.sock systemd-private-606af9ac8a8c48d8bd2a5d7938fec6e8-vmtoolsd.service-6NjtpQ php-fcgi.sock test.com.log
2018-4-27 18周2次课 分发系统-expect讲解(下)
标签:expect
原文地址:http://blog.51cto.com/11530642/2107911