我在http://localhost/test/testweb
我想编写一个脚本来检查webservice是否已启动curl
如果给出了curl参数,则返回200 OK
ok true false以便我可以使用它是linux脚本中的if-else块
答案 0 :(得分:59)
curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
-s
=无声的cURL输出-L
=关注重定向-w
=自定义输出格式-o
=将HTML输出重定向到/dev/null
示例:
[~]$ curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
200
如果我要捕获输出,我可能会移除\\n
。
答案 1 :(得分:5)
我使用:
curl -f -s -I "http://example.com" &>/dev/null && echo OK || echo FAIL
-f --fail出现HTTP错误时静默失败(根本没有输出)
-s --silent静默模式
-I --head仅显示文档信息
注意:
根据需要,您还可以删除“ -I”,因为在某些情况下,您需要执行GET而不是HEAD
答案 2 :(得分:3)
与@ burhan-khalid相同,但添加了--connect-timeout 3
和--max-time 5
。
test_command='curl -sL \
-w "%{http_code}\\n" \
"http://www.google.com:8080/" \
-o /dev/null \
--connect-timeout 3 \
--max-time 5'
if [ $(test_command) == "200" ] ;
then
echo "OK" ;
else
echo "KO" ;
fi
答案 3 :(得分:0)
这将通过wget 2>&1
检查标头stderr到stdout
grep
个过滤器
-O /dev/null
只会抛出页面内容
if [ "\`wget http://example.org/ -O /dev/null -S --quiet 2>&1 | grep '200 OK'\`" != "" ];
then
echo Hello;
fi;
我知道不是卷曲,但仍然是一个解决方案
答案 4 :(得分:0)
我需要一个更好的答案,所以我写了下面的脚本。
fakePhrase用于检测ISP“搜索助手”广告软件HTTP resposnes。
#!/bin/bash
fakePhrase="verizon"
siteList=(
'http://google.com'
'https://google.com'
'http://wikipedia.org'
'https://wikipedia.org'
'http://cantgettherefromhere'
'http://searchassist.verizon.com'
)
exitStatus=0
function isUp {
http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp`
fakeResponse=`cat temp_isUp | grep $fakePhrase`
if [ -n "$fakeResponse" ]; then
http=$fakePhrase
fi
case $http in
[2]*)
;;
[3]*)
echo 'Redirect'
;;
[4]*)
exitStatus=4
echo "$1 is DENIED with ${http}"
;;
[5]*)
exitStatus=5
echo "$1 is ERROR with ${http}"
;;
*)
exitStatus=6
echo "$1 is NO RESPONSE with ${http}"
;;
esac
}
for var in "${siteList[@]}"
do
isUp $var
done
if [ "$exitStatus" -eq "0" ]; then
echo 'All up'
fi
rm temp_isUp
exit $exitStatus
答案 5 :(得分:0)
使用此:
curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE