小型自动化运维--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 root@$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/

截图如下:

wKioL1j-tNqDRF8qAAA30otvPy8320.png

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

wKiom1j-tpLSG7wDAAAK5LVCpl0626.png

注:

(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 root@$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执行!

截图如下:

wKioL1j-uHfTPWOpAAA6WyFlUnE026.png

注:我这里只是用了一台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 / root@$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 /


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


截图如下:

wKioL1j-wUriRNeqAAA2bY3DN1A244.png

远程主机上查看:

wKioL1j-wbqDLZ3QAAAemdxjrbI859.png




     本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1919148,如需转载请自行联系原作者


相关文章
|
19天前
|
jenkins 持续交付
Jenkins自动化部署脚本
Jenkins自动化部署脚本
22 0
|
28天前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
40 1
|
7天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
19天前
|
运维 监控 Linux
linux脚本自动化运维任务
Linux自动化运维通过脚本提升效率,涵盖服务管理(启停服务、异常恢复)、系统监控(资源警报)、日志管理(清理分析)、备份恢复、补丁更新、自动化部署(如Ansible)、网络管理、定时任务(cron)和故障排查。结合shell、Python及工具,形成高效运维体系。
18 3
|
26天前
|
监控
通过Lua脚本实现禁止员工上班玩游戏的软件的自动化任务管理
使用Lua脚本,企业可以自动化管理员工行为,防止上班时间玩游戏。Lua是一种轻量级脚本语言,适合编写监控任务。示例脚本展示了如何检测工作时间内员工是否玩游戏,并在发现时执行相应操作,如关闭游戏或发送警告。此外,另一脚本演示了如何将监控数据通过HTTP POST自动提交到网站,以实现有效的行为管理。这种解决方案灵活且可定制,有助于提升工作效率。
86 1
|
28天前
|
数据采集 数据处理 开发工具
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
|
1月前
|
前端开发 Java 测试技术
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
【2月更文挑战第14天】《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程) 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本。前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容,首先宏哥搭建好的环境中创建首个完整的自动化测试脚本,让小伙伴或者童鞋们提前感受感受,也是为了激起大家的学习兴趣。宏哥的个人经验是:自动化脚本编写比较容易,最大的困难去如何去写测试断言。自动化测试,最重要的还是落在测试上面,而不是自动化,自动化只是手段。
38 1
《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
|
1月前
|
数据采集 测试技术 Python
Python自动化脚本的魅力与实践
Python自动化脚本的魅力与实践
47 0
|
1月前
|
数据处理 Python
Python自动化脚本
Python自动化脚本
20 0
|
7月前
|
缓存 运维 Linux
Linux(CentOS)运维脚本工具集合
Linux(CentOS)运维脚本工具集合
141 2

热门文章

最新文章