如上所述,curl可以本地提供http响应:
#!/bin/bash
#example1.sh
function test {
RESPONSE=$(curl -so /dev/null -w "%{http_code}\n" ${1})
if [[ $RESPONSE != 200 ]]; then
echo "Error ${RESPONSE} on ${1}"
fi
}
test mysite.com
test google.com
例1中,-s
我们沉默进度并-o /dev/null
让我们丢弃响应,但这-w
是您的盟友:
$ ./example1.sh
Error 000 on mysite.com
Error 301 on google.com
可以通过请求url_effective和redirect_url进一步在curl中进行简化:
#!/bin/bash
#example2.sh
function test {
curl -so /dev/null -w "%{http_code}\t%{url_effective}\t%{redirect_url}\n" ${1}
}
test mysite.com
test google.com
示例2我们看到了最初的http响应,原始请求的域,并重定向了响应的服务器:
$ ./example2.sh
000 HTTP://mysite.com/
301 HTTP://google.com/ http://www.google.com/
但是,如果您最终希望在301或302重定向之后建立200响应:那么您可以删除前面提到的'redirect_url'
#!/bin/bash
#example3.sh
function test {
curl -sLo /dev/null -w "%{http_code}\t%{url_effective}\n" ${1}
}
test mysite.com
test google.com
示例3我们添加-L
了指令curl追踪重定向的示例:
$ ./example3.sh
000 HTTP://mysite.com/
200 http://www.google.com/