<结果>成功< /结果>
<结果>失效< /结果>
echo -e "GET /test HTTP/1.1 Host:$(hostname) " | 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标头.