在没有curl和wget情况下发送HTTP请求
Bash 的 /dev/tcp
功能为用户提供了一个直接的方式,通过 TCP 套接字发送 HTTP 请求,这一功能可以在没有额外工具的情况下执行简单的网络操作。
发送HTTP GET请求
#!/bin/bash # 打开一个 TCP 连接到 baidu.com 的 80 端口,并将其分配给文件描述符 3 exec 3<>/dev/tcp/baidu.com/80 # 向文件描述符 3 发送 HTTP 请求 echo -ne "GET / HTTP/1.1\r\nHost: baidu.com\r\nConnection: close\r\n\r\n" >&3 # 从文件描述符 3 读取响应并输出到标准输出 cat <&3 # 关闭文件描述符 3 exec 3<&-
脚本模板
#!/bin/bash exec 3<>/dev/tcp/baidu.com/80 lines=( 'GET / HTTP/1.1' 'Host: baidu.com' 'Connection: close' '' ) printf '%s\r\n' "${lines[@]}" >&3 while read -r data <&3; do echo "got server data: $data" done exec 3>&-
作者:Standby — 一生热爱名山大川、草原沙漠,还有我们小郭宝贝!
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/standby/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。