CentOS 下运维自动化 Shell 脚本之 expect

CentOS 下运维自动化 Shell脚本之expect

一、预备知识:
1、在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符。(“echo -eprint效果相同”)
  • 在 Terminal 结尾反斜杠,当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。
2、区别 “命令输出” 与 “命令引用” 以及 POSIX(可移植操作系统接口)
  • sh -c "ifconfig"
    • bash -c "ifconfig"
  • $( ifconfig )
    • `ifconfig`
3、命令与命令的”引用、嵌套“是 $() 或 `` 可参见此文
4、命令输入输出进行自动化完成,我们成为与命令行的交互。* 全自动命令交互无需用户干涉即需要用到"expect" *
二、事件分析:
北京某家公司是一家 IDC公司为用户提供优质服务,现某客户找到技术人员要求检测将其测试虚拟机进行维护。
三、思路整理:
宗旨:为不过多干扰用户优质体验,应尽量减少用户操作。

1、审查用户需求是否正常。

2、判断是否可以立刻解决。

3、是否可以正常连接网络。

4、询问是否是否拥有公网。

5、给予加密脚本程序执行。

6、技术人员已经远程操作。

关于步骤五具体过程:

1、服务器开设SSH用户

  • 使用”-M“参数不生产用户家目录

2、测试SSH转发是否正常

3、使用工具加密脚本

  • shc -v -f filename.sh

4、上传第三方文件储存处

  • git commit
  • sh $(wget -c https://raw.githubusercontent.com/username/filename.sh -O filename.sh.x)

5、发送并进行安全维护


下述为重点:进行端口转发及自动化处理几种办法。

四、expect 脚本编写

Expect中最关键的四个命令是send,expect,spawn,interact。

send:   用于向进程发送字符串
expect: 从进程接收字符串
spawn:  启动新的进程
interact:允许用户交互
1、基础版本:

#!/usr/bin/expect
//这是脚本解释器(bangshe),用于指使用expect解释。
spawn ssh root@aliyun.example.com -p 9452
//使用spawn打开一个进程
expect {
//表接收或理解为发现"yes/no"
"yes/no" {send "yes\n" ; exp_continue}
//发送yes并回车;exp_continue 表示继续执行
"password:" {send "passwd\n"}
//表接收或理解为发现"password:" 发送passsword并回车
}
expect {
"#" {send "``date``\n"}
//发现#,说明成功登陆操作系统
}
send "/etc/init.d/atd restart\n"
send "echo '/bin/bash /srv/shell/export.sh' | at now+1hour \n"
send "setsid /bin/env python3 /srv/shell/muniao.py\n"
send "setsid /bin/env python3 /srv/shell/xiaozhu.py\n"
send "touch 'this is a rabbit'\n"
send "exit\n"
expect eof
//表示send可以完成发送
interact
//表示转给用户操作

还有俩个注意的地方:双引号里面是单引号、输出形脚本使用interact(eof会将send一个个执行)、需要使用setsid时候关闭窗口并非exit

转载于:https://www.cnblogs.com/itxdm/p/6044219.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值