shell脚本之expact

shell脚本之expact文章目录 expact 简介 expact 可以做什么什么是 expactexpect 安装 expact 使用 expact 原理 expact 命令 expact 使用 demodemo1 执行命令脚本 work 脚本 expect 脚本 expact 简

大家好,欢迎来到IT知识分享网。

expact简介

expact可以做什么

  • 我们可以通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预。最近因为项目需要一个小脚本,先自动认证kerberos,然后进行其他一系列操作。会需要实现和交互程序如telnet服务器等进行交互的功能。而expect就使用来实现这种功能的工具。

什么是expact

  • expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。

expect安装

  • expect在centos下的安装非常简单,直接通过npm安装就可以。
    sudo yum install expect 
  • 直接yes
    安装1
  • 安装完成
    安装2

expact使用

expact原理

  • Expect的原理:
    Expect脚本语言自动提交输入到交互程序,它的工作原理是等待特定字符串,并发送或者响应相应的字符串。以完成对于的自动化交互任务,如自动登录等;

expact命令

  • 修改脚本执行器
    修改第一行指示了这个脚本要用哪个程序来运行;
    #!/usr/bin/expect -f 
  • spawn
    在EXPECT下启动了一个我们要执行的程序,这个程序也是expact脚本监控输出的程序,相当于判断条件
    spawn:启动命令 
  • expect
    我们要告诉expect,当什么信息出现时需要expect帮助我们完成交互;
    expect:等待来自进程的特定的字符串 
  • send
    当符合expact的内容出现时,要发送的内容;
    send:发送字符串到进程 
  • interact
    是保持交互,不要退出。没有这句的话,完成后会自动退出。
    interact:允许用户交互 
  • 获取参数
    expact不使用$1,$2等获取输入参数
    # 代表输入的第一个参数 [lindex $argv 0] # 代表输入的第二个参数 [lindex $argv 1] 

expact使用demo

demo1

  • 通过ssh到其他的机器上执行hive终端,获取test库下的所有表

执行命令脚本

work脚本

  • 新建work脚本
    # 新建脚本文件 touch work_hive.sh # 赋权 chmod +x ./work_hive.sh 
  • 脚本内容
    #/bin/bash ssh test1 hive 

expect脚本

  • 新建监控work脚本
    # 新建脚本文件 touch test_hive.sh # 赋权 chmod +x ./test_hive.sh 
  • 脚本内容
    # 命令解释器 #!/usr/bin/expect -f # 输入库名 set DB_ID [lindex $argv 0] # 监控的脚本 spawn ./work_hive.sh # 检测字符串 expect "Are you sure you want to continue connecting (yes/no)?" # 输出对应内容,\r代表回车 send "yes\r" expect "@test1's password:" send "\r" expect "hive> " send "use $DB_ID;\r" expect "hive (test)> " send "show tables;\r" interact 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/110413.html

(0)
上一篇 2026-01-31 19:45
下一篇 2026-01-31 20:12

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信