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

    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 " ; exp_continue}
    //发送yes并回车;exp_continue 表示继续执行
    "password:" {send "passwd "}
    //表接收或理解为发现"password:" 发送passsword并回车
    }
    expect {
    "#" {send "``date`` "}
    //发现#,说明成功登陆操作系统
    }
    send "/etc/init.d/atd restart "
    send "echo '/bin/bash /srv/shell/export.sh' | at now+1hour "
    send "setsid /bin/env python3 /srv/shell/muniao.py "
    send "setsid /bin/env python3 /srv/shell/xiaozhu.py "
    send "touch 'this is a rabbit' "
    send "exit "
    expect eof
    //表示send可以完成发送
    interact
    //表示转给用户操作

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

  • 相关阅读:
    C语言I—2019秋作业02
    C语言I—2019秋作业01
    C语言I博客作业01
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
  • 原文地址:https://www.cnblogs.com/itxdm/p/6044219.html
Copyright © 2020-2023  润新知