我要检查我的网站在线还是没有使用BASH脚本。
目前,我正在尝试检查是否卷曲响应错误,然后重新启动APACHE,但由于我使用的是云弹,所以它不起作用。我不是BASH脚本开发人员。我需要帮助,以便可以从我的网址检查JSON
的响应是否为真,然后可以,否则请重新启动Apache。
URL="http://apental-calc.com/online.php"
for i in {1..5};do
curl $URL >/dev/null 2>&1
if [[ $? -ne 0 ]];then
echo "Restarting Apache2"
service apache2 restart
sleep 5
continue
else
echo "Working"
exit 0
fi
完成
答案 0 :(得分:1)
我猜您要恢复的是一个HTTP代码,表明请求已成功,在这种情况下,您可以尝试以下操作:
HTTP_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $URL)
这将打印已完成请求的HTTP状态,例如:
HTTP_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://www.google.com)
echo $HTTP_RESPONSE
301
200和30X代码表示服务器正在工作。如果没有得到结果,那么该是检查CURL退出代码的时候了:
if [ $? -eq 7 ] then ...
从7开始,当CURL无法连接到主机时返回的代码:
查看所有代码: https://ec.haxx.se/usingcurl-returns.html
UPDATE :如评论中所讨论,是否在HTTP状态代码或JSON有效负载(缺少)中进行检查尚不清楚。如果要检查有效负载,可以使用:
URL提供虚拟JSON: https://jsonplaceholder.typicode.com/todos/2
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": false
}
可以对此进行解析(假设我们要检查“标题”):
$ curl -s https://jsonplaceholder.typicode.com/todos/2 | grep -Po '"title": ".*' | cut -f 4 -d '"'
这仅匹配指定的模式并提取值。