我有一个基于ARM架构的Busybox(嵌入式Linux),但其二进制文件很有限。如何在不使用curl的情况下进行HTTP POST或PUT请求?
busybox
自带wget
,但其功能有限且不适合用于发布。您可以将busybox
与netcat
(或nc
)结合使用以实现结果。您只需要为您的平台下载netcat
二进制文件即可。然后就可以开始了:
POST_PATH="/login.cgi"
HOST=199.188.1.99
BODY="Put here HTML body...."
BODY_LEN=$( echo -n "${BODY}" | wc -c )
echo -ne "POST ${POST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${BODY_LEN}\r\n\r\n${BODY}" | \
nc -i 3 ${HOST} 80
nc
可以通过TCP连接到服务器,但无法协商SSL/TLS连接。您应该使用curl
/wget
来处理HTTPS。或者更加原始的方式是使用OpenSSL的s_client
代替nc
**,例如:echo -ne "GET /not_exist HTTP/1.0\r\n\r\n" | openssl s_client -quiet google.com:443
。 - SergA我有和你一样的问题,于是我决定从alpine创建最小化的镜像,比busy box做的更多但比ubuntu少。
https://hub.docker.com/r/prima101112/palugada你可以在pod或容器内使用curl、traceroute甚至vim进行编辑。
或者如果你还想继续使用busybox,通常我会选择:
kubectl exec -it busybox -- wget {url}
kubectl exec -it busybox -- cat index.html
该命令将显示响应。
希望这能帮到你。
wget --post-data "xxx" -q $URL
向URL发出POST请求,其中xxx
是要发送的数据。
wget
,它提供了一些类似的功能,但实际上,您应该告诉我们更多关于您的项目规格。请编辑您的问题,不要在评论中回复。此外,由于这不是解决“if/then/else/endif”类型编码问题的内容,因此可能会被关闭。在StackExchange上的相关网站http://softwarerecs.stackexchange.com或http://unix.stackexchange.com可能是更好的提问地点。祝你好运! - shellter