July 24, 2009

Esecuzione automatica in base alla rete

Dato che io uso lo stesso portatile a casa e a lavoro, mi fa comodo avviare programmi (sotto X) in base a dove mi trovo.

Per fare questo ho fatto un semplice script di shell da mettere in esecuzione automatica del proprio desktop manager (nel caso di KDE basta copiarlo in ~/.kde/Autostart e dargli i permessi di esecuzione):

#!/bin/sh

test_peer() {
  [ $(arping -w 1 -f "$1" 2>/dev/null | sed -n 's/.*\[\([[:xdigit:]:]*\)\].*/\1/p') = "$2" ]
}

if test_peer "10.0.0.1" "00:11:22:33:44:55"; then
  kontact &
  kopete &
fi

Lo script necessita di arping presente in iputils (sotto debian/ubuntu si trova nel pacchetto iputils-arping).

Al posto di 10.0.0.1 va messo un ip di cui si è certi che sarà sempre presente e uguale (il gateway?).
Al posto di 00:11:22:33:44:55 il suo mac address (basta lanciare arping IP per trovarlo).
Al posto di kontact e kopete mettete la lista degli applicativi che si vuole lanciare (terminanti da & se non vanno in background da soli).

Se si hanno più reti, basta mettere più blocchi if, ognuno con la propria coppia IP/MAC e con la lista di applicativi da lanciare.