Synergy mediante un script de Network Manager
Hace tiempo estoy utilizando Synergy para manejar mi notebook mediante el teclado y el mouse de otra computadora, ya sea la desktop en casa o la pc del trabajo.
Como en el trabajo las IPs son dinámicas, cada tanto tenía que averiguar que IP tenia la computadora y cambiar la configuración en la notebook para que se conecte. Terminé armando un script que determina cual es la red actual (trabajo/casa) y busca la IP del servidor mediante arp (con la mac address) y luego corre el cliente de Synergy automáticamente.
Momentos épicos del código: obtener la ip a partir de una dirección mac.
#escaneo la red para juntar mac address nmap -sP $NETWORK &>/dev/null #escaneo la red para juntar mac address
#extraigo la ip de la tabla arp arp -a | grep $MAC_ADDR | grep -oP '(K[d|.]*'
Una opción era agregarlo al crontab, pero se me ocurrió que podía correrse sólo cuando una interfaz de red "levanta".
Según la documentación de Archlinux (aunque no sea mi distro):
- ::
-
There are quite a few network services that you will not want running until NetworkManager brings up an interface. Good examples are NTPd and network filesystem mounts of various types (e.g. netfs). NetworkManager has the ability to start these services when you connect to a network and stop them when you disconnect. To activate the feature you need to start the NetworkManager-dispatcher.service.
Once the feature is active, scripts can be added to the /etc/NetworkManager/dispatcher.d directory. These scripts must be owned by root, otherwise the dispatcher will not execute them. For added security, set group ownership to root as well.