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>&-
原文:如何在 Bash 中没有 curl 或 wget 情况下发出 HTTP 请求?










没有回复内容