michael@slashetc:~$

Apt-cacher-ng Toggle Proxy on Hosts

Hi everyone and happy Festivus!!

So I was at my parents this morning for one of those non-secular holidays for gifts, and of course I bring my Linux laptop. After the festivities of gift giving, I pop open my lappy and start killing some time - and while doing that also start an apt update (patch your 'S'). I then start getting a bunch of errors that apt couldn't reach any of the repos. I remember I have an apt-cacher-ng proxy running at home and my lappy is configured to use it, so it's not reachable from where I was. I could have simply VPN'd in - but what's the fun in that!

On Ubuntu's page for apt-cacher there's a few scripts that will automatically enable/disable the proxies (mostly based off ping), either by running the script manually, in cron, or by events such as network. Well none of those were good enough for me; all of them required something that was not in my mobile environment or simply did not like cron/manual running. I ended up taking the ideas (and maybe a line or two) from one of the examples and wrote my own. You can find it here on my gitlab server....

Heres the initial comments:

#!/bin/bash
#------------------------------------------------------------------------------
#
# Name   : toggle_apt-cache.sh
#
# Purpose: Toggles usage of proxies listed in ${aptProxyConf}
#
# Usage  : toggle_apt-cache.sh [start|on|off]
#
#     start       Same as calling script with no arguments. Run normal test
#                 and enable/disable routines
#
#     on          Toggle ALL proxies listed in ${aptProxyConf} ON
#
#     off         Toggle ALL proxies listed in ${aptProxyConf} OFF
#
#
# Installation: Make a symlink from where ever this script lives
#               to /etc/network/if-up.d, or simply put the script there:
#
#  ln -s /path/to/toggle_apt-cache.sh /etc/network/if-up.d/toggle_apt-cache.sh
#
#------------------------------------------------------------------------------

What's great about my version, is it uses the file where you have configured your apt proxies and parses out the necessary information. Which is a major plus for me - it means I don't need to update more than one file when I add/remove/change apt-proxy servers. The script also supports multiple servers listed in a single file and will dynamically enable/disable based on server availability when the script runs. I currently have it symlinked to /etc/network/if-up.d/toggle_apt-cache.sh.

I'm also add at some point support for turning on/off all proxies at once, or individually via toggle_apt-cache.sh [on|off] host.example.com. But that's an addition for another day.

Hope you all enjoy this...