我正在尝试使用此脚本测试代理是否正常工作。问题是,无论如何,它都以 echo "Proxy is working" 结尾。有什么想法吗?
export http_proxy='http://proxy.test.cz:1234/'
OUTPUT_FILE=/tmp/$$.txt
wget -nv --proxy-user=test --proxy-password=test google.com > ${OUTPUT_FILE} 2>&1
grep -q '<H1>You cant use internet</H1>' ${OUTPUT_FILE}
if [ "$?" -eq '0' ]
then
echo "Proxy isnt working. " | mail -s "Proxy isnt working" -r "No-reply<[email protected]>" [email protected]
else
echo "Proxy is working"
fi
rm -f /tmp/$$.txt
答案1
我已经通过这种方式解决了:
export http_proxy='http://proxy.test.cz:1234/'
URL='www.google.com'
wget -q --proxy-user=test --proxy-password=test --spider $URL
if [ $? = 1 ]
then
STATUS= echo "Proxy isn't working"
else
STATUS="Proxy is working."
fi
echo $STATUS
答案2
虽然这个问题有些老了,但提供另一种答案可能仍然有一定价值。以下是我的答案:
set_proxies() {
export http_proxy=http://proxy.example.com:998
export HTTP_PROXY=${http_proxy}
export https_proxy=http://proxy.example.com:999
export HTTPS_PROXY=${https_proxy}
export ftp_proxy=http://proxy.example.com:998
export FTP_PROXY=${ftp_proxy}
export socks_proxy=socks://proxy.example.com:9999
export SOCKS_PROXY=${socks_proxy}
export no_proxy=localhost,127.0.0.1,.docker.io,192.168.9.100
export NO_PROXY=${no_proxy}
export ALL_PROXY_NO_FALLBACK=1
export all_proxy=socks5://proxy.example.com:9999
}
URL='www.google.com'
curl -s -m 2 $URL > /dev/null
if [ $? == 0 ] then
STATUS="No Corporate Proxy"
else
set_proxies
STATUS="Behind Corporate proxy"
fi
echo $STATUS
答案3
问题出在 if 检查中的 $? 周围的引号:
if [ "$?" -eq '0' ]
当 grep 没有找到您要查找的字符串时,返回代码为 1。因此,此 if 检查等同于:
if [ "1" -eq '0' ]
它始终是错误的,因此您会得到“代理正在工作”。
使用
if [ $? -eq 0 ]
反而。