Uma ideia seria colocar um script neste diretório: /etc/NetworkManager/dispatcher.d
. O NetworkManager executará scripts em ordem alfabética quando ocorrerem vários eventos de rede.
NetworkManager will execute scripts in the /etc/NetworkManager/dispatcher.d directory in alphabetical order in response to network events. Each script should be (a) a regular file, (b) owned by root, (c) not writable by group or other, (d) not set-uid, (e) and executable by the owner. Each script receives two arguments, the first being the interface name of the device just activated, and second an action.
Com base na página man, há os seguintes "eventos": cima, baixo, vpn-up, vpn-down, nome do host, dhcp4-change, & dhcp6-change.
Eu suspeito que você poderia fazer o que quiser usando o evento "up". Esta postagem do blog, intitulada: " Use o NetworkManager para iniciar scripts baseados em scripts na localização de rede ", mostra como você pode construir um script de shell para ser executado quando uma interface (eth0) sobe.
Por exemplo (código "emprestado" da postagem do blog):
#!/bin/sh
IF=$1
STATUS=$2
USER=justintime
wait_for_process() {
PNAME=$1
PID='/usr/bin/pgrep $PNAME'
while [ -z "$PID" ]; do
sleep 3;
PID='/usr/bin/pgrep $PNAME'
done
}
start_synergy() {
wait_for_process nm-applet
/bin/su $USER -c "/usr/bin/synergyc $1"
}
if [ "$IF" = "eth0" ] && [ "$STATUS" = "up" ]; then
#LAN Subnet at work
NETMASK="10.0.0.0/8"
if [ -n "'/sbin/ip addr show $IF to $NETMASK'" ]; then
ARGS="jentoo.bucklehq.com"
start_synergy $ARGS
exit $?
fi
fi
Este exemplo deve ser suficiente para você começar a fazer o que está tentando fazer.