expect命令简介
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。常用语ssh和telnet等需要进行人机交互的命令。
以前写过一个expect实现ssh跳转登录的例子:http://blog.csdn.net/koastal/article/details/52434314
基本结构
## 如果expect文件不存在,需要安装 yum install expect
#!/usr/bin/expect
## 设置脚本超时时间
set timeout 30
## 执行spawn之后的命令
spawn ssh -l root 192.168.238.130
## 如果执行结果包含expect之后的内容,则继续执行,否则退出
expect "password:"
## 模拟人工发送数据
send "root\r"
## 执行完成后保持交互状态,把控制权交给控制台,可以进一步人工操作
interact
HTTP和SMTP的报文格式
具体报文格式参照,php通过sock实现http和smtp的文章:http://blog.csdn.net/koastal/article/details/53149689
shell发送HTTP请求
expect发送GET请求
基本格式
#!/usr/bin/expect
set timeout 30
spawn telnet 127.0.0.1 80
expect "]"
send "GET /demo.php?name=zhezhao&age=23 HTTP/1.1\r"
send "Host: 127.0.0.1\r"
send "Connection: close\r"
send "\r\r"
interact
expect发送POST请求
基本格式
#!/usr/bin/expect
set timeout 30
set data "name=zhezhao&age=23"
set length [string length $data]
spawn telnet 127.0.0.1 80
expect "]"
send "POST /demo.php HTTP/1.1\r"
send "Host: 127.0.0.1\r"
send "Content-type:application/x-www-form-urlencoded\r"
send "Content-length:$length\r"
send "Connection: close\r\r"
send "$data\r"
interact