在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、介绍expect脚本是Tcl脚本语言的拓展。用来实现自动的交互式任务,无需人为干预。在实际开发中,运行shell脚本有时候会输入linux密码或者是mysql密码等,而expect可以帮我们输入。 二、安装expect在linux系统中没有自带,需要我们自行安装,在Ubuntu系统下,安装命令如下 sudo apt-get update sudo apt-get install expect 三、简单的expect脚本3.1、编写脚本首先创建expect脚本 sudo vim hello.exp 在hello.exp下写如下内容: #!/usr/bin/expect set timeout 5 spawn su expect { assword {send "123456\r"} #你的linux密码 } interact 运行hello.exp expect hello.exp 运行后,你会发现你的用户就变成root用户了,我们用过linux的会知道,进入root用户是需要输入密码的,而使用了expect脚本,他就会自动帮我们输入密码。这就是expect的自动化交互。 3.2、解释脚本(1) #!/usr/bin/expect (2) set timeout 5 set timeout 5:意思是在expect语句中,5s后超时,不再作出选择。 (3) spawn su (4) expect { assword send {“123465\r”}} expect { assword send {"123465\r"} } 说明:判断输出的信息有没有包含 (5) interact 3.3、总结看到这里,相信你已经知道了expect脚本本质:提前知道了linux系统的返回信息,并捕获这些信息,来作出应答。 四、正文4.1、常用命令说明
4.2、示例:运行shell脚本(1)创建一个shell脚本,1.sh #!/bin/bash echo "read print" read -p "please input name in there " NAME echo ${NAME} read -p "input password in there " PASSWORD echo ${PASSWORD} 该脚本的意思就是输入你的账号,密码,并打印出来 (2)创建一个expect脚本,1.exp。让1.exp帮我们输入信息 #!/usr/bin/expect #若要运行shell脚本,写shell脚本的绝对路径 spawn bash /home/hadoop/test/1.sh #设置expect语句的超时时间。默认10s set timeout 3 expect { #expect类似于swtich语句,在括号{}内匹配语句,只要一找到匹配的语句,就会执行, #执行完之后就会退出,而加上exp_continue之后不会退出,会继续往下执行。 #这里是匹配字符串,不需要双引号,有大小写区分 name { send "meizhaowei\r" send_user "success\n" #回显示给用户的信息,类似与echo,打印信息到控制台上 exp_continue } assword {send "123456\r"} } expect eof #与interact相反,执行完程序不进入人工交互 (3)运行 正常来说,运行1.sh会让你手动输入name与password,但是这里运行了1.exp后,就能让1.exp来帮你输入1.sh的信息 若你想更深入的研究expect语法,这里有使用手册 到此这篇关于linux自动化交互脚本expect的文章就介绍到这了,更多相关linux expect自动化交互脚本内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论