一、 分发系统介绍
二、 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