博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
expect工具使用
阅读量:6440 次
发布时间:2019-06-23

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

hot3.png

expect脚本同步文件

#!/usr/bin/expectset passwd "1"spawn rsync -av root@192.168.65.130:/tmp/12.txt /tmp/expect {"yes/no" { send "yes\r"}"password:" { send "$passwd\r" }}expect eof// expect eof会给予一定的时间让你进行操作// 如果没有加expect eof,将导致同步没执行就断开连接,这样是不对的

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

#!/usr/bin/expectset passwd "1"set host [lindex $argv 0]set file [lindex $argv 1]  // 这里只适合同步1个文件spawn rsync -av $file root@$host:$fileexpect {"yes/no" { send "yes\r"}"password:" { send "$passwd\r" }}expect eof

执行

./5.expect 192.168.65.130 /tmp/12.txt

可以通过set timeout来指定超时时间,-1表示永不超时,5表示超时间时间为5s


构建分发系统

需求:生产环境下,需要一次同步多个文件,之前的那个代码显然不足以实现功能

核心命令:rsync -av --files-from=list.txt / root@host:/

/usr/local/sbin/rsync.expect脚本如下:

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

/tmp/file.list内容如下:

#其实质为所需同步的各个文件的绝对路径/tmp/12.txt/tmp/2.txt/root/1.sh

/tmp/ip.list文件内容

# 要执行的服务器ip,这里要求密码是相同的;但是这样有安全隐患# 可以使用秘钥认证来登录,秘钥可以一致192.168.65.130192.168.65.131192.168.65.132

/usr/local/sbin/rsync.sh

#!/bin/bashfor ip in `cat /tmp/ip.list`do    echo $ip    ./usr/local/sbin/rsync.expect $ip /tmp/file.listdone

最后执行/usr/local/sbin/rsync.sh即可

脚本、文件说明

/usr/local/sbin/rsync.expect基本执行的是远程主机同步文件的功能,它会一次性同步多个文件;文件列表在/tmp/file.list内;/usr/local/sbin/rsync.sh通过循环遍历ip.list内的要进行同步命令的主机,来循环执行rsync.expect脚本,这样最终实现多主机多文件同步功能!


批量远程执行命令

向之前批量同步文件功能类似,我们可以实现批量远程执行命令

/usr/local/sbin/exe.expect

#!/usr/bin/expectset host [lindex $argv 0]set passwd "1"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"

/usr/local/sbin/exe.sh

#!/bin/bashfor ip in `cat /tmp/ip.list`do    echo $ip    ./exe.expect $ip "w;free -m;ls /tmp"done

执行exe.sh即可实现批量命令执行

转载于:https://my.oschina.net/LuCastiel/blog/1626571

你可能感兴趣的文章
【R】函数-概率函数
查看>>
Oracle一条SQL语句时快时慢
查看>>
TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集
查看>>
php html_entity_decode使用总结
查看>>
ubuntu下进行ssh
查看>>
Django+xadmin打造在线教育平台(三)
查看>>
A real example of vioplot in R (sample data and code attached)
查看>>
[转]微擎目录结构介绍
查看>>
Win7+Qt5.6.0(64位)+msvc2015编译器 环境配置
查看>>
Intel Fortran 调用Delphi编制的DLL
查看>>
golang包time用法详解
查看>>
c#文件分割与合并 part 2
查看>>
[Leetcode] Path Sum
查看>>
Ext江湖
查看>>
一起谈.NET技术,实战ASP.NET大规模网站架构:Web加速器
查看>>
RHEL 6.6下Python 2.6.6升级到Python 3.6.6
查看>>
linux 内核启动过程以及挂载android 根文件系统的过程 ( 转)
查看>>
shell每日更新(7)
查看>>
单词的个数
查看>>
从程序员到项目经理(27):怎样给领导汇报工作
查看>>