博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分发系统-expect-批量同步文件、批量执行命令
阅读量:6703 次
发布时间:2019-06-25

本文共 1534 字,大约阅读时间需要 5 分钟。

分发系统-批量同步

将指定文件传送到多个ip的相同目录下

创建expec脚本

rsync.expect

代码:

#!/usr/bin/expectset passwd "123456"set host [lindex $argv 0]set file [lindex $argv 1]spawn rsync -av --files-from=$file / root@$host:/expect {"yes/no" { send "yes\r"}"password:" { send "$passwd\r"}}expect eof

说明:

必须相同密码,也可以设置秘钥登录即可;核心命令rsync -av --files-from=$file / root@$host:/rsync -av --files-from=文件名 / 用户名@目标ip:/

创建shell脚本

rsync.sh

代码:

#!/bin/bashfor ip in `cat /usr/local/shell/ip.list`do    echo $ip    ./rsync.expect $ip /usr/local/shell/list.txtdone

说明:

做一个循环,循环为ip个数,也就是必须创建一个ip.list的文件,里面写上目标ip
每循环一次,输出当前ip,执行expect 脚本。指定脚本参数为ip 和文件列表中的信息

创建ip列表

vim /usr/local/shell/ip.list192.168.188.3192.168.188.4

创建文件列表

vim /usr/local/shell/list.txt/tmp/1.txt/tmp/2.txt

权限与运行

chmod a+x /usr/local/shell/rsync.shchmod a+x /usr/local/shell/rsync.expectsh /usr/local/shell/rsync.sh

检查

检查192.168.188.3 与192.1688.188.4的/tmp目录是否同步上1.txt和2.txt

注意:对应主机都必须安装rsync包


分发系统-批量执行命令

创建expect脚本

exe.expect

代码:

#!/usr/bin/expectset passwd "123456"set host [lindex $argv 0]set cm [lindex $argv 1]spawn ssh root@$hostexpect {"yes/no" { send "yes\r"}"password:" { send "$passwd\r"}}expect "]*"send "$cm\r"expect "]*"send "exit\r"

创建shell脚本

exe.sh

代码:

#!/bin/bashfor ip in `cat /usr/local/shell/ip.list`do     ./exe.expect $ip "hostname"done

说明:

其中./exe.expect 是运行当前目录的exe.expect脚本,并附带两个参数;其中hostname为命令;

创建ip列表

vim /usr/local/shell/ip.list192.168.188.3192.168.188.4

权限与运行

chmod a+x exe.expectchmod a+x exe.shsh exe.sh

也可以使用sh -x exe.sh 查看shell运行的详细步骤;

转载于:https://blog.51cto.com/shuzonglu/2108379

你可能感兴趣的文章
Delegate如何进行类型转换?
查看>>
高速排序算法
查看>>
Flex强制类型转换错误
查看>>
android stuio eclipse映射下的快捷键
查看>>
Insert Interval
查看>>
浅谈P2P终结者原理及其突破
查看>>
串口WIF简单I调试
查看>>
把《c++ primer》读薄(3-3 标准库bitset类型)
查看>>
MDI多文档窗体续
查看>>
img图片自适应宽和高[转]
查看>>
Android Studio体验(一)--Window版本安装
查看>>
ubuntu install express
查看>>
js中substr与substring的差别
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>
FusionCharts简单教程(一)---建立第一个FusionCharts图形
查看>>
sql中实现split()功能
查看>>
ZOJ 2562 More Divisors(高合成数)
查看>>
[原]Android打包之跨平台打包
查看>>
C++的try_catch异常
查看>>
(转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,......
查看>>