服务器正在 5000 端口上运行。我必须编写一个 bash 脚本来 cURL 该 URL 并解析响应。这里的问题是服务器可以在http
或https
协议上运行。这意味着我有curlhttps://serverip:5000
或http://serverip:5000
。
现在,我首先检查http
请求。如果该请求失败,那么我将进行检查https
。有没有什么方法cURL
可以自动检测正在运行的服务器http
或https
向其发出请求?
答案1
AFAIK,“curl”命令不提供确定连接是否为 SSL 的功能。因此,您需要使用不同的工具来检查这一点。
我创建了一个小脚本,它使用“openssl”来确定指定的连接是否是 SSL。享受:
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: testssl.sh <host> [port]"
exit 1;
fi
PROTO="http"
echo ^d | openssl s_client -connect ${1}:${2:-443} && PROTO="https"
curl ${PROTO}://${1}:${2:-443}