小型自动化运维--expect脚本之指定ip,指定文件进行同步操作(一)

小型自动化运维--expect脚本之指定ip,指定文件进行同步操作


# vim 5.expect

#!/usr/bin/expect

set passwd "wtf"

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av $file [email protected]$host:$file

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof

对5.expect授予执行权限:

# chmod a+x 5.expect

执行命令:

#./5.expect 192.168.8.115 /tmp/

截图如下:

查看远程主机/tmp/路径下文件,截图如下:

注:

(1)192.168.8.115是远程主机ip;

(2)#./5.expect 192.168.8.115 /tmp/这条命令表示:把本地主机/tmp/路径下的文件,远程同步到ip为192.168.8.115主机/tmp/路径下。

(3)spawn rsync -av $file [email protected]$host:$file 这里的文件路径要完全一致,本地的 file 路径和远程的 file 路径要完全一致,做到标准化。

(4)那么在实际环境中,应用程序的位置,配置文件的位置,不同的机器,存放的路径应该一致,root密码也应该一致,否则 expect 自动化运维便不那么方便。

  • 扩展一:传输到多个机器

# vim /tmp/ip.txt 【创建 ip 列表】

192.168.8.115

192.168.8.116

192.168.8.117

方法一:# for ip in `cat /tmp/ip.txt`; do ./5.expect $ip /tmp/;done

或者:写个for循环脚本,脚本如下:

方法二:

#!/bin/bash

d=`date`

for ip in `cat /tmp/ip.txt`

do ./5.expect $ip /tmp/

done

上面两种方式的区别:

方法一可以直接以命令形式执行,注意命令之间的分号;方法二使用sh for.sh执行!

截图如下:

注:我这里只是用了一台192.168.8.115的虚拟主机。

  • 扩展二:多个文件传输到一台主机上

本地主机多个文件同步传输到远程主机上


# vim /tmp/filelist 【创建一个文件列表文件,里面是需要传输的各个文件的路径, 绝对路径 】

/tmp/33.txt

/usr/test

# vim 6.expect

#! /usr/bin/expect

set passwd "wtf"

set host [lindex $argv 0]

set file [lindex $argv 1]

spawn rsync -av --files-from=/tmp/filelist / [email protected]$host:$file

expect {

"yes/no" { send "yes\r"}

"password:" { send "$passwd\r" }

}

expect eof

授权:chmod +x 6.expect

执行:./6.expect 192.168.8.115 /

或者:

# /usr/bin/expect 6.expect 192.168.8.115 /

注:最后的 / 表示远程的根目录 /。


截图如下:

远程主机上查看:

时间: 2024-08-24 02:59:53

小型自动化运维--expect脚本之指定ip,指定文件进行同步操作(一)的相关文章

小型自动化运维--expect脚本之自动同步

小型自动化运维--expect脚本之自动同步 expect脚本可以运用于自动化运维多个方面,例如:可以自动到远程机器执行命令,也可以传输文件到远程机器上. 脚本如下: #!/usr/bin/expect set passwd "wtf" spawn rsync -av [email protected]:/tmp/shiyan.txt /tmp/ expect { "yes/no" { send "yes\r"} "password:&

小型自动化运维--expect脚本V2版

小型自动化运维--expect脚本V2版 在实际运维工作中,需要我们向远程主机同步数据,可以用rsync来实现.那么用expect脚本怎么实现数据传输完成之后自动退出远程主机呢?在开始expect脚本V2版之前,我们先来看下,使用expect脚本来实现远程主机的登入,脚本如下: #! /usr/bin/expect set host "192.168.8.120" set passwd "wtf" spawn ssh [email protected]$host e

小型自动化运维--expect脚本

小型自动化运维--expect脚本 expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.知道用户名和密码或者是使用密钥验证都可以使用,下面介绍expect 脚本实现登陆和远程命令: 安装ssh包 # yum install -y expect openssh-clients [依赖 ssh ,通信的机器都要安装 openssh-clients] 编写脚本 # vim /usr/local/sbin/1.expect #! /usr/bin/expect set host "

小型自动化运维--expect脚本之传递函数

小型自动化运维--expect脚本之传递函数 [[email protected] ~]# vim 3.expect #!/usr/bin/expect set user [lindex $argv 0] set host [lindex $argv 1] set passwd "wtf" set cm [lindex $argv 2] spawn ssh [email protected]$host expect { "yes/no" { send "y

小型自动化运维--expect入门知识

小型自动化运维--expect入门知识 Expect的自动交互工作流程简单说明: spawn启动指定进程-->expect获取期待的关键字-->send向指定进程发送指定字符-->进程执行完毕,退出脚本. spawn命令 如果没有spawn命令,expect程序将会无法实现自动交互. spawn命令的语法为: spawn [选项] [需要自动交互的命令或程序] 例如:spawn ssh [email protected] uptime 说明:在spawn命令的后面,直接加上要执行的命令或

自动化运维 Expect

Mac 下载:brew install homebrew/dupes/expect expect : ->  自动化脚本工具:  用于处理交互命令; #注意 调用时并不是使用的 /bin/bash 而是 expect#!/usr/local/bin/expect Expect中最关键的四个命令是send,expect,spawn,interact. send:用于向进程发送字符串  expect:从进程接收字符串  {捕捉返回信息中的字符串} spawn:启动新的进程   {启动新的进程} in

小型自动化运维工具pssh和传输工具rsync

一.简单介绍 1.pssh全称是parallel-ssh,基于Python编写的并发在多台服务器上批量执行命令的工具.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.它相当于ansible的简化版,执行起来速度比ansible快,支持文件并行复制,远程命令执行,杀掉远程主机上的进程,杀手锏是文件并行复制. 2.相关参数 -h –hosts 主机文件列表,内容格式”[[email protected]]host[:port]”

[自动运维]ant脚本打包,上传文件到指定服务器,并部署

1.根节点使用,表示根目录为当前目录,默认启动的target为build,项目名称为othersysm, <project basedir="." default="build" name="othersysm"> </project> 2.每一个target为一个执行命令,如果有依赖关系,则写为: <target depends="build-project" name="build&

linux云自动化运维基础知识11(ip网络 )

####1.ip基础知识####1.ipv42进制32位-----10进制 172.25.0.10/255.255.255.0172.25.0.10:ip地址255.255.255.0:子网掩码子网掩码255位对应的ip位为网络位子网掩码0对应的ip位为主机位 ####2.配置ip####<<图形化>>1.图形界面nm-connection-editor 2.文本化图形nmtui <<命令>>ifconfig 网卡 ip netmask    ##临时设定