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、上传第三方文件储存处

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

CentOS 下运维自动化 Shell 脚本之 expect的更多相关文章

  1. linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  2. 转 如何不耍流氓的做运维之——SHELL脚本

    家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写 SHELL 脚本如何能够不耍流氓. 下面的案例,我们以 MySQL 数据库备份 SHELL 脚本的案例来进行阐述. 不记录 ...

  3. 如何不耍流氓的做运维之-SHELL脚本

    前言 大家都是文明人,尤其是做运维的,那叫一个斯文啊.怎么能耍流氓呢?赶紧看看,编写SHELL脚本如何能够不耍流氓. 下面的案例,我们以MySQL数据库备份SHELL脚本的案例来进行阐述: 不记录日志 ...

  4. Centos下使用php调用shell脚本

    我们在实际项目中或许会遇到php调用shell脚本的需求.下面就用简单案例在Centos环境下实践 准备 查看php.ini中配置是否打开安全模式 //php.ini safe_mode = //这个 ...

  5. Linux运维之shell脚本进阶篇

    一.if语句的使用 1)语法规则 if [条件] then 指令 fi 或 if [条件];then 指令 fi 提示:分号相当于命令换行,上面两种语法等同特殊写法:if[ -f"$file ...

  6. Linux运维之shell脚本

    一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...

  7. Linux运维之shell脚本基础知识

    1.bash中的算术运算 let运算符 [root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i [root@:vg_adn_tidbCkhs ...

  8. 运维常用shell脚本一(系统指标巡检、自动创建用户、跳板机)

    一.系统指标巡检脚本 #!/bin/bash menu(){ cat <<EOF +---------------------------------------------+ | 日常巡 ...

  9. 运维常用shell脚本之日志清理

    1.创建一个日志清理脚本 #/bin/bash for i in `find /root/.pm2/logs -name "*.log"` do cat /dev/null > ...

随机推荐

  1. android开源系列之——xUtils 开源库

    http://blog.csdn.net/lijunhuayc/article/details/40585607

  2. catalina.properties

    追踪 startup.bat set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat" call "%EXECUTABLE%&q ...

  3. bdb log file 预设长度的性能优化

    看代码随手记:log_put.c, __log_write() /* * If we're writing the first block in a log file on a filesystem ...

  4. [置顶]PADS PCB功能使用技巧系列之NO.006- 如何实现OrCAD与PADS Layout同步?

    很多同仁都喜欢用OrCAD画原理图,而PCB Layout则用PADS/PowerPCB,这两者被有些人誉为“黄金组合”,但由于两者并非一套软件,因此如何实现同步亦是需要急待解决的问题... (未完待 ...

  5. MVVM和MVC的区别

    MVVM(Model-View-ViewModel) 优点:低耦合:可重用:独立开发:可测试 即,将页面与数据分离的模式:将数据绑定工作放到javaScript文件中实现,javaScript文件的主 ...

  6. [poi2010]Hamsters

    题意:Tz养了一群仓鼠,他们都有英文小写的名字,现在Tz想用一个字母序列来表示他们的名字,只要他们的名字是字母序列中的一个子串就算,出现多次可以重复计算.现在Tz想好了要出现多少个名字,请你求出最短的 ...

  7. shell 知识

    解压 tar.bz2文件 bunzip2 linux-2.6.13.tar.bz2 | tar xvf -

  8. Oracle EBS进化史

    https://blogs.oracle.com/ptian/entry/oracle_ebs%E8%BF%9B%E5%8C%96%E5%8F%B2 通过图表总结了下Oracle EBS的进化历史,回 ...

  9. MVC_Controller

    准备工作 安装VS2010或更高版本 安装数据库2008或更高版本 视个人系统不同配置IIS本地服务 数据库和VS下载地址 http://msdn.itellyou.cn/ 本节目标 通过本节案例对M ...

  10. 微信公共平台开发-(.net实现)3--发送文本消息

    最近,项目这边比较忙,没来得及续写,哎,先吐吐槽吧,在这个周六还得来上班,以后每个周六多要上,一天的滋味真有点受不鸟呀.还不习惯ing... 嗯,别的不说了现在开始接着上次http://www.cnb ...