Две универсальных рекомендации сначала:
@myvpsip
вместо того, чтобы использовать корень. Из страницы руководства NetworkManager:
NetworkManager выполнит сценарии в/etc/NetworkManager/dispatcher.d каталоге в алфавитном порядке в ответ на сетевые события. Каждый сценарий должен быть (a) регулярный файл, (b) принадлежавший корню, (c) не перезаписываемый группой или другим, (d) не набор-uid, (e) и исполняемый файл владельцем. Каждый сценарий получает два аргумента, при этом первым является имя интерфейса устройства, просто активированного и второго действие.
Таким образом да, кажется, что можно инициировать действия от NetworkManager на запуске и остановке сетевых соединений.
Простой сценарий может быть (не протестирован):
#!/bin/bash
#/etc/NetworkManager/dispatcher.d/ssh-proxy
case "$2" in
up)
nohup ssh -D 9999 user@myvpsip
tunnelpid=$!
echo $tunnelpid > /var/run/ssh-proxy
;;
down)
if [ -e /var/run/ssh-proxy ] ; then
tunnelpid=$(cat /var/run/ssh-proxy)
kill -9 $tunnelpid
rm /var/run/ssh-proxy
fi
;;
esac