bash – 如何使用openssl从HTTP GET请求中获取结果?
发布时间:2020-12-15 18:28:02 所属栏目:安全 来源:网络整理
导读:我需要使用openssl在 shell脚本中执行一些HTTP GET请求.我现在用来做这条线的线如下所示.这是解析以下格式的 XML响应的内容. 结果成功 /结果 结果失效 /结果 echo -e "GET /test HTTP/1.1rnHost:$(hostname)rnrn" | openssl 21 s_client -quiet -conne
我需要使用openssl在
shell脚本中执行一些HTTP GET请求.我现在用来做这条线的线如下所示.这是解析以下格式的
XML响应的内容.
<结果>成功< /结果> <结果>失效< /结果> echo -e "GET /test HTTP/1.1rnHost:$(hostname)rnrn" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P --color '(?<=Result&;).*(?=&;/Result)' 这样可以相应地返回字符串’success’或’failure’.我面临的问题是openssl命令在执行GET请求后没有终止,而是在那里等待更多输入.我认为这是由于隐式-ign_eof导致-quiet选项导致的自动终止.我已经尝试使用-no_ign_eof选项,但这会导致openssl命令在GET请求收到响应之前终止,所以如果我使用它,我就无法得到响应的内容. 如何修改此命令以便我可以通过stdin传递GET请求(因为我想把它放在一个循环中),但是在每次请求后openssl命令都会终止?
你真正应该做的是使用一个专门用于获取Web资源的工具,例如curl,wget或libwww-perl的GET命令.如果没有可用的东西,您应该让系统管理员安装适当的东西.
随着那个… openssl命令未终止,因为Web服务器未关闭连接. 请记住,默认情况下,HTTP会在每个请求后保持连接打开,作为性能优化.一个请求完成后,可以通过同一连接发送另一个请求,而不是关闭并重新打开新连接. 如果要指示服务器关闭连接,可以发送Connection:close HTTP标头. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |