第十九章 Shell编程(三)

本文介绍了如何使用Shell和expect脚本构建文件分发系统,包括expect的安装、远程登录、远程执行命令、传递参数、同步文件等操作。通过expect,可以实现自动化登录远程主机、执行命令和文件同步,提高运维效率。
摘要由CSDN通过智能技术生成

一、 分发系统介绍
二、 expect脚本远程登录
三、 expect脚本远程执行命令
四、 expect脚本传递参数
五、 expect脚本同步文件
六、 expect脚本指定host和要同步的文件
七、 构建文件分发系统
八、 批量远程执行命令
九、 扩展

 

一、 分发系统介绍

由于业务迭代更新,经常需要更改代码,如果机器很多,此时为了快速更新代码就可以使用分发系统,把更新的代码分别发布到机器上去。其中开源的上线代码的软件有很多,如git等等。这里我们使用shell来编写一个分发系统来上线代码。核心使用expect脚本语言,它可以实现远程执行命令,远程传输数据等操作。

准备工作

1.准备1台模版机器,里面是包含有最新的代码

2.每台分发机器的IP地址和密码

3.分发系统脚本

由于分发系统的核心是使用expect,因此先实践几个例子来熟悉expect的语法命令。

安装expect:

yum install -y expect   # 可以使用yun安装expect软件

实验环境:

# 实验需要两台主机

分发主机1:192.168.1.128

远程主机2:192.168.1.138

 

二、 expect脚本远程登录

1. 在expect分发主机上安装expect

[root@Linux01 ~]# yum install -y expect
2. 编辑脚本

[root@Linux01 ~]# cd /usr/local/sbin/

[root@Linux01 sbin]# vim 1.expect

#!/usr/bin/expect
set host "192.168.1.138"                             # 设置变量,目标主机的ip
set passwd "931223"                                  # 设置变量,目标主机的用户密码
spawn ssh root@$host  # 自动交互开始,在Expect自动交互程序执行的过程中,spawn命令是一开始就需要使用的命令
expect {
"yes/no" { send "yes\r";exp_continue }
"assword:" { send "$passwd\r" }                #输入密码 $passwd\r 。匹配的字符串不加p是因为不清楚是大写还是小写
}
interact
注:大括号的两边都需要有空格

// set 定义变量

// spawn 执行命令

// expect 使用expect语句进行交互

// \r表示回车

// exp_continue表示继续 expect语句

// interact表示ex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值