Set a proxy and carry over the values to sudo

If you’ve ever been behind an enterprise proxy server and needed to reach things on the outside, you probably know how frustrating it is to try and just use your normal commands for something as simple as a wget. So, to get started you will need to know the URL and port for your proxy server, but once you have that, start by editing your .bashrc and add the following (setting proxyhost, the port, and adjusting “no_proxy” as appropriate)…

function proxyon(){
     echo -n "password (for proxy): "
     read -es password
     export http_proxy="http://$USER:$password@proxyhost.com:8181/"
     export HTTP_PROXY=$http_proxy
     export https_proxy=$http_proxy
     export HTTPS_PROXY=$http_proxy
     export ftp_proxy=$http_proxy
     export rsync_proxy=$http_proxy
     export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,.domain.com"
     echo -e "\nProxy environment variable set."
}
function proxyoff(){
     unset HTTP_PROXY
     unset http_proxy
     unset HTTPS_PROXY
     unset https_proxy
     unset FTP_PROXY
     unset ftp_proxy
     unset RSYNC_PROXY
     unset rsync_proxy
     echo -e "\nProxy environment variable removed."
}

# remove next line if you don't want to set proxy automatically on login
proxyon

Now you can turn your proxy on and off with the “proxyon” and “proxyoff” commands, but that doesn’t help you when you try to install something with yum or apt that requires sudo. To carry over the proxy values, you’ll need to “sudo visudo” and add the “Defaults” line like shown below…

###############################################
# DO NOT ADD ANYTHING FROM HERE TO END OF FILE #
#
#includedir   /etc/sudoers.d
#
# DO NOT ADD ANYTHING ABOVE THIS LINE###########
Defaults env_keep = "http_proxy https_proxy HTTP_PROXY HTTPS_PROXY ftp_proxy"

… and now, hopefully you are all set.

Like this? Consider joining my mailing list, or at least using my affiliate link when buying from Amazon 🙂

You or someone you know looking to buy or sell?

Leave a Reply