expect编程
来源:互联网 发布:岳不群 知乎 编辑:程序博客网 时间:2024/05/23 14:26
Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。
用Expect语言主要是为了对集群进行管理,包括自动重启,删除,建立文件夹等。
首先进行安装expect工具
sudo apt-get install tcl tk expect
脚本以.exp结尾,用expect *.exp命令来执行
expect *.exp
下面是几个例子:
scp脚本:
#!/usr/bin/expect -f#设置变量password为hadoopset password hadoop#编写for循环i从1到9 for{set i 1} {$i <=19} {incr i} {#将/home/hadoop/文件夹下的test文件发送到hadoop@192.168.3.$i:/home/hadoop文件夹下 spawn scp /home/hadoop/text hadoop@192.168.3.$i:/home/hadoop#设置命令执行时间为300msset timeout 3000#第一次执行会询问密钥expect "Are you sure you want to continue connecting (yes/no)? "#发送“yes” send "yes\r"set timeout 300#检测控制台是否输出"password: " expect "password:"#将"$password\r"即hadoop发送到控制台 send "$password\r"#执行完毕退出 expect eof}
rm脚本
#!/usr/bin/expect -fset password hadoopfor {set i 1} {$i <=19} {incr i} {#通过ssh登陆节点spawn ssh slave$i#检测输出“$”expect "$"#执行删除命令send "rm -r /home/augustus/hadoop.tar.gz\r"set timeout 100#执行退出命令 send "exit\r"puts $iexpect eof }
sudo脚本
#!/usr/bin/expect -fset password hadoopfor {set i 1} {$i <=19} {incr i} {spawn ssh slave$iexpect "$"send "sudo tar -zxf /home/augustus/hadoop.tar.gz -C /usr/local/augustus/\r"set timeout 100expect "password for augustus:"send "$password\r"set timeout 200send "exit\r"expect eof }
需要转义的字符\ 需转义为 \\\} 需转义为 \}[ 需转义为 \[$ 需转义为 \\\$` 需转义为 \`" 需转义为 \\\"
阅读全文
0 0
- expect编程
- Expect 编程教程
- 交互式编程学习-expect
- shell编程expect
- 交互式shell编程利器expect
- Expect
- expect
- expect
- expect
- Expect
- expect
- expect
- expect
- expect
- expect
- expect
- expect
- expect
- Django向Highcharts图表发送数据并用模板语言实现动态显示
- Can you find it? 【二分】
- Lucene学习笔记(2)
- mysql的插入语句的条件插入
- HDU 5821 Ball【贪心】
- expect编程
- 阿里云PAI
- android 五角星画法 五角星计算公式
- 剑指offer 35---查找第一个只出现一次的字符
- Zuul动态路由及动态Filter实现
- Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
- 利用反射原理用get/set方法设置属性(也可用clone,但如果有特殊处理的东西,这个好用)
- setFillAfter失效
- 大数专题A