Shell编程-下

Shell项目-分发系统

expect介绍

expect 是一个用来实现自动交互功能的软件,是基于tool command Language脚本语言的编程工具。 在现今的企业运维中, 自动化运维已经成为运维的主流趋势, 但是在很多情况下,执行系统命令或程序时,系统会以交互式的形式要求运维人员输入指定的字符串,之后才能继续执行命令。 例如为用户设置密码时,一般情况下就需要手工输入2次密码。

安装expect

yum install -y expect

实现自动远程登录

# 主机1:10.1.1.32

主机2:10.1.1.30

自动远程登录脚本

Shell编程-下_第1张图片

测试脚本是否可用

Shell编程-下_第2张图片

自动登陆后,执行命令后退出

Shell编程-下_第3张图片

测试脚本效果

Shell编程-下_第4张图片

传递参数

Shell编程-下_第5张图片

测试脚本效果

Shell编程-下_第6张图片

自动同步文件

Shell编程-下_第7张图片

测试脚本效果

Shell编程-下_第8张图片

指定目标主机和需要同步的文件, 将文件同步到目标主机上,此方式只能同步一个文件或者目录

Shell编程-下_第9张图片

测试脚本效果

Shell编程-下_第10张图片

构建文件分发系统

需求背景:

对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。

实现思路首先要有一台模板机器,把要分发的文件准备好,

然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。

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

定义用于同步文件的expect脚本

Shell编程-下_第11张图片

创建一个存放文件路径的列表文件

创建列表文件中的相关文件,用于实验

创建一个主机IP列表文件

# ips.list文件内容如下,这里我就用一台主机来做实验了,这个文件中可以放多个主机的IP

10.1.1.30

创建一个循环同步的shell脚本

Shell编程-下_第12张图片

测试脚本效果

Shell编程-下_第13张图片

Shell编程-下_第14张图片

注:这个文件分发系统有一个弊端,所有同步的主机都需要使用相同的密码, 而且有泄露密码的风险。

但是也可以使用密钥认证登录的方式来解决这个问题。

分发系统-批量执行命令

思路:创建一个执行指定命令的expect脚本, 然后使用一个shell脚本来循环执行这个expect脚本

创建 exe.expect 脚本文件,内容如下

Shell编程-下_第15张图片

创建 exe.sh 脚本文件,内容如下, 这里又用到了之前的 ips.list 主机列表文件

Shell编程-下_第16张图片

测试脚本效果

Shell编程-下_第17张图片

扩展

shell多线程

 

 

 

 

 

你可能感兴趣的:(Shell编程-下)