Você pode enviar notificações usando notify-send yourmessage
, mas o que você quer fazer é um pouco estranho.
Seu roteador é o que controla as conexões, uma conexão com sua rede não será registrada ou notada pelo seu computador, a menos que o dispositivo realmente conecte / interaja com seu computador. É claro que você poderia estar fazendo um monitor analisando regularmente a rede como:
nmap -sn 192.168.1.*
e depois ler seus dados daqui (ou arp, porque agora você pode encontrá-los lá). Mas basicamente o dispositivo para monitorar conexões é o seu roteador, não o seu pc.
Se o seu roteador suportar, você poderá analisar o log do roteador para o syslog do seu pc. Agora você recebe uma mensagem no syslog quando uma conexão é feita, o que você pode enviar para o seu ambiente de trabalho, se quiser.
Mas para responder a pergunta , adicione um script ao seu cron que faça um nmap -sn, canalize este para o arquivo temporário e compare isso com a situação anterior usando o diff. Diff out significa offline, diff in significa online.
Um exemplo aproximado (manipula apenas a primeira alteração de ip por execução):
#!/bin/bash
#
#Script to monitor the network and put changes to notification
#
#Save previous scan
cp scan.txt previousscan.txt
#get numeric list of online hosts
nmap -n -sn 192.168.178.* > scan.txt
#collect the difference, only the lines with ip-numbers
message=$(diff previousscan.txt scan.txt | grep 192)
#get first char which indicates if the host came up or went away
iostring="${message:0:1}"
#get first ip-number from the list
computer="${message:23:17}"
#show ip-number in notify if host came up
if [ "$iostring" = \> ]; then
notify-send "$computer online"
fi
#show ip-number in notify if host went away
if [ "$iostring" = \< ]; then
notify-send "$computer offline"
fi