1、Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。
例:在/root下建立test.exp,执行命令:expect /root/test.exp
#!/usr/bin/expect -f
#这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的#bash、windows下的cmd是一类东西。
#注意:这一行需要在脚本的第一行。
set timeout 10
#设置默认超时时间(秒),如果在给定的时间内没有输入,则会超时并返回一个默认的响应。
#file name: test.exp
#Usages: shutdown ports
#Version: v1.1
#By Create mark
#Date: 2013-3-6
spawn telnet 172.21.1.1
#spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
expect "login:"
#这里的expect也是expect的一个内部命令,expect的shell命令和内部命令是一样的,但不是一个功能。判断上次输出结果里是否包含“login:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的10秒
send "用户名\r"
#执行交互动作,与手工输入密码的动作等效。
expect "password"
send "密码\r"
#sleep 1000
send "enable ports 1:6\r"
send "exit\r"
send "y\r"
expect eof
exit