How to test if proxy is working correctly?


I am trying to test if proxy is working correctly using this script. Problem is that it no matter what ends by echo "Proxy is working" . Any ideas please ?

export http_proxy='
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<>"
else echo "Proxy is working"
fi
rm -f /tmp/$$.txt
1

3 Answers

I have solved it this way :

export http_proxy='
URL='
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

Although somewhat old question, but it may be still have some value to provide another answer. So here is mine:

set_proxies() { export http_proxy= export HTTP_PROXY=${http_proxy} export https_proxy= export HTTPS_PROXY=${https_proxy} export ftp_proxy= 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='
curl -s -m 2 $URL > /dev/null
if [ $? == 0 ] then STATUS="No Corporate Proxy"
else set_proxies STATUS="Behind Corporate proxy"
fi
echo $STATUS

The problem is because of the quotes around $? in the if check:

if [ "$?" -eq '0' ]

When the grep didn't find the string you were looking for, the return code was 1. So this if check equates to:

if [ "1" -eq '0' ]

which is always false, hence you get "Proxy is working".

Use

if [ $? -eq 0 ]

instead.

0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like