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. backbone框架思路

    Backbone是MVC框架.如何使用这个框架来简化前端过程呢?作为一个初学者,虽然网上有它的官方文档,但是都是讲的一些方法,思路分析的却对初学者来说,看得晕乎乎的.现在就把自己对这个框架的理解记录在 ...

  2. Django-简单项目创建

    在磁盘中找到需要存放项目代驾的目录,进入该目录(本机为: /Downloads/All) 输入Django创建项目命令:django-admin startproject mysite,此时在目录下会 ...

  3. uva-327

    题意:给出一个C语言加减法表达式,求出这个表达式的最终结构,以及各个变量的值,每个变量保证至出现一次,保证输入的字符串合法: 输入:一串包含+.-和小写的26个英文字母: 输出:表达式的结果,以及表达 ...

  4. premierepro破解

    1.安装硬解 360云盘 破解教程:mac sky/破解安装说明.rtf 破解软件:mac sky/Smart Adobe CS6 Blocker v1.1.app 安装文件:mac sky/Prem ...

  5. AOP 事务

    定义 AOP实际可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,非业务类横切于业务类), 通过AOP以动态和非入侵方式来增强服务 事务的四大属性:ACID ...

  6. 浅析C语言指针问题

    首先明白c语言操作符的优先级及结合性就很容易理解了. 链接 1.关于char *s 及 char s[] char *s指向的是一个字符串对象的指针,可以理解为间接引用,比如 char *s = “1 ...

  7. ActionBar的使用

    ActionBar的使用很普遍,可以充当工具栏使用.本文介绍如何使用ActionBar. 1.ActionBar一般包含有多个工具按钮.所以,需要新建一个xml文件来存放ActionBar中的内容.在 ...

  8. dell交换机固件

    Upgrading the S4048-ON Dell Networking OS Image using the Dell Networking OS CLI Bare Metal Provisio ...

  9. python中re.findall()找到的结果替换

    正则表达式re模块中用findall查找到的是ascii码,所以当比对替换时也需要对应的ascii码才能匹配成功.以下程序是查找文件夹下文件名中含有男.女的文件,并将男替换成1,将女替换成2的程序 # ...

  10. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...