大家好,欢迎来到IT知识分享网。
文章目录
expact简介
expact可以做什么
- 我们可以通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预。最近因为项目需要一个小脚本,先自动认证kerberos,然后进行其他一系列操作。会需要实现和交互程序如telnet服务器等进行交互的功能。而expect就使用来实现这种功能的工具。
什么是expact
- expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
expect安装
- expect在centos下的安装非常简单,直接通过npm安装就可以。
sudo yum install expect - 直接yes
- 安装完成
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