shell脚本中免交互工具ecpect是怎样用的
admin
2023-02-24 22:40:02
0

Expect概述

  • Expect是建立在tcl基础上的一个工具,Expect是用来进行自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。对于大规模的Linux运维很有帮助。

  • 在Linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能需要输入yes/no、password等信息。为了模拟这种输入,可以使用Expect脚本。
    Expect安装

    yum install expect -y   安装expect服务

    Expect基本命令
    1.send:向进程发送字符串,用于模拟用户的输入

  • 该命令不能自动回车换行,一般要加\r (回车)
    2.expect

  • expect的一个内部命令,判断上次输出的结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。

  • 只能捕捉spawn启动的进程的输出。
    3.spawn:启动进程,并跟踪后续交互信息。
    4.interact:执行完成后保持交互状态,把控制权交给控制台
    5.Timeout:指定超时时间,过去则继续执行后续指令

  • 单位是:秒

  • timeout -1 为永不超时

  • 默认情况下,timeout是10秒
    6.exp_continue

  • 允许expect继续向下执行
    7.send_user

  • 回显命令,相当于echo
    8.$argv 参数数组

  • expect脚本可以接受从bash传递的参数,可以使用【lindex,$argv n】获得,n从0开始,分别表示第一个、第二个。。。
    9.Expect脚本必须以interact或expect eof结束,执行自动化任务通常expect eof就够了

  • expect eof 是在等待结束标志,由spawn启动的命令在结束时会产生一个eof标记,expect eof就是在等待这个标记。
    Expect语法
    单一语法分支

    expect “password” {send “mypassword”;}

    多分支语法结构

    expect {
    "aaa"{send "AAA\r"}
    "bbb"{send "BBB\r"}
    "ccc"{send "CCC\r"}
    }

    示例:
    1.利用expect 完成ssh登录过程
    (1)直接执行

    #!/usr/bin/expect
    set timeout 60
    #环境设置
    log_flie test.log
    log_user 1
    #变量定义
    set hostname [lindex $argv 0]
    set password [lindex $argv 1]
    #启动spawn
    spawn ssh root@$hostname
    #匹配条件
    expect {
    "(yes/no)"
    {send "yes\r";exp_continue}
    "password"
    {send "$password\r"}
    }
    #权限转交控制台
    interact

    (2)嵌入执行

    #!/bin/bash
    hostname=$1
    password=$2
    /usr/bin/expect<<-EOF
    spwan ssh root@${hostname}
    expect{
        "(yes/no)"
        {send "yes\r";exp_continue}
        "*password"
        {send "password\r"}
    }
    expect "*]#"
    send "exit\r"
    expect eof
    EOF

    2.创建用户tom,密码tom123

    #!/bin/bash
    user=$1
    password=$2
    useradd=$user
    expect<<-EOF
    spawn passwd $user
    expect {
            "New password:"
            send "${password}\r"
            "Retype new password:"
            send "${password}\r"
    }
    ecpect eof
    EOF

相关内容

热门资讯

“725上凯道游行”靠游览车动... 海峡导报综合报道 国民党全代会今天(25日)上午登场,紧接着下午即进行“725反毒油凯道抗议游行”。...
超过阿里巴巴和美团,携程为何挨... 2026年7月,市场监管总局对携程集团有限公司滥用市场支配地位行为作出行政处罚决定,责令携程停止违法...
夺取全年粮食丰收有较好基础(权... 本报记者 郁静娴“农业农村经济保持稳中向好的良好势头,为国民经济延续总体平稳、向新向优的态势提供有力...
山西洪洞发生黄土崩塌,致5人死... 今天(25日)上午,记者从山西省洪洞县应急管理局获悉,洪洞县好义村黄土崩塌受困人员已全部找到。其中,...
瑞尔塔完成核聚变装置内直接能量... (来源:电力国际汇epintl) 六月早些时候,《聚变能源报道》曾刊发过瑞尔塔聚变公司(Realta...
中海油服获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示中海油服(601808)新获得一项发明专利授权,专利名为“一种...
特朗普:301关税正式接棒,已... 据凤凰卫视报道,特朗普24日在白宫回应多项议题,强调最高法院推翻旧关税法源后,政府已改采新的法律依据...
夫妇雨天出门疑被电身亡,现场有... 7月24日,新京报记者多方核实获悉,陕西宝鸡永清村22日晚突发雷暴雨,一对中年夫妇雨天在村中道路疑被...
游戏掌机存储卡推荐:三星 T7... 当游戏加载条变短、4K视频秒录、掌机库一键随行——存储不该是妥协的理由。 三星T7,1TB大容量m...
宇树科技创始人兼CEO王兴兴登... 王兴兴登上时代封面。 当地时间7月23日,宇树科技创始人兼CEO王兴兴与其载人机甲产品GD01共同登...