Created
December 2, 2015 10:26
-
-
Save filviu/07103fd18b5441b2f7db to your computer and use it in GitHub Desktop.
apt-get use a proxy only if available. Shamelessly lifted from here: http://askubuntu.com/questions/53443/how-do-i-ignore-a-proxy-if-not-available
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/apt/apt.conf.d/30detectproxy: | |
# Fail immediately if a file could not be retrieved. Comment if you have a bad | |
# Internet connection | |
Acquire::Retries 0; | |
# undocumented feature which was found in the source. It should be an absolute | |
# path to the program, no arguments are allowed. stdout contains the proxy | |
# server, stderr is shown (in stderr) but ignored by APT | |
Acquire::http::ProxyAutoDetect "/etc/apt/detect-http-proxy"; | |
# Override the default proxy, DIRECT causes a direct connection to be used | |
Acquire::http::Proxy { | |
deb.opera.com DIRECT; | |
dl.google.com DIRECT; | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# - Returns a HTTP proxy which is available for use | |
# Author: Lekensteyn <[email protected]> | |
# Supported since APT 0.7.25.3ubuntu1 (Lucid) and 0.7.26~exp1 (Debian Squeeze) | |
# Unsupported: Ubuntu Karmic and before, Debian Lenny and before | |
# Put this file in /usr/local/bin/detect-http-proxy.shy and create and add the below | |
# configuration in /etc/apt/apt.conf.d/30detectproxy | |
# Acquire::http::ProxyAutoDetect "/etc/apt/detect-http-proxy"; | |
# APT calls this script for each host that should be connected to. Therefore | |
# you may see the proxy messages multiple times (LP 814130). If you find this | |
# annoying and wish to disable these messages, set show_proxy_messages to 0 | |
show_proxy_messages=1 | |
# on or more proxies can be specified. Note that each will introduce a routing | |
# delay and therefore its recommended to put the proxy which is most likely to | |
# be available on the top. If no proxy is available, a direct connection will | |
# be used | |
try_proxies=( | |
10.0.0.1:8000 | |
10.0.0.2:8000 | |
) | |
print_msg() { | |
# \x0d clears the line so [Working] is hidden | |
[ "$show_proxy_messages" = 1 ] && printf '\x0d%s\n' "$1" >&2 | |
} | |
for proxy in "${try_proxies[@]}"; do | |
# if the host machine / proxy is reachable... | |
if nc -z ${proxy/:/ }; then | |
proxy=http://$proxy | |
print_msg "Proxy that will be used: $proxy" | |
echo "$proxy" | |
exit | |
fi | |
done | |
print_msg "No proxy will be used" | |
# Workaround for Launchpad bug 654393 so it works with Debian Squeeze (<0.8.11) | |
echo DIRECT |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for tip I was trying figure out how to set the timeout, thanks again and thanks for the creator, nice script.