web-dev-qa-db-fra.com

Notification Lorsqu'un utilisateur se connecte à mon réseau local, ARP, fichier de notification


J'ai une question concernant Ubuntu 12.04 LTS Desktop - notifications (même notification que l'application Rhythmbox lors de la lecture de musique), techniquement, si je ne me trompe pas, il convient de l'appeler "freedesktop.Notifications.service". Je veux juste ajouter des notifications lorsque l'un de mes appareils, tel que; ordinateur portable, téléphone, tablette se connecter à mon réseau local. Ma configuration est la suivante:

J'ai un routeur sans fil. Mon routeur est connecté directement à mon ordinateur de bureau avec un fil, j'utilise un réseau local, les autres périphériques se connectent via une connexion WI-FI.

À titre d'exemple, disons:

adresse IP de mon routeur: 192.168.1.1 & adresse MAC XX: XX: XX: XX: XX: XX

Moi - en tant que serveur - 192.168.1.101 & adresse MAC YY: YY: YY: YY: YY: YY

Smartphone - 192.168.1.102 & adresse MAC ZZ: ZZ: ZZ: ZZ: ZZ: ZZ

Laptop - 192.168.1.103 & adresse MAC KK: KK: KK: KK: KK: KK

  • Ce que je veux faire est simple. ajoutez ces adresses IP ainsi que leurs adresses MAC dans ARP et modifiez enfin le fichier de notification, chaque fois que ces périphériques se connectent à mon réseau local, je suis averti. C'est ça.

P.S: J'ai dit "ARP". Cependant, je ne suis pas sûr que cela convienne, je suppose simplement que cela a quelque chose à voir avec fichier de configuration ARP, et fichier de notification. Toute suggestion utilisant un terminal ou une autre application sera acceptable.

Je serai très apprécié si quelqu'un peut m'aider.

1
ggalaxy

Vous pouvez envoyer des notifications en utilisant notify-send yourmessage mais vous voulez faire quelque chose d'étrange.

Votre routeur est celui qui gère les connexions, une connexion à votre réseau ne sera ni enregistrée ni remarquée par votre ordinateur à moins que le périphérique ne se connecte/interagisse réellement avec votre ordinateur. Bien sûr, vous pourriez créer un moniteur en scannant régulièrement le réseau, par exemple:

nmap -sn 192.168.1.*

et puis lisez-vous les données d’ici (ou arp, parce que maintenant vous pouvez les trouver là). Mais fondamentalement, le dispositif de surveillance des connexions est votre routeur, pas votre ordinateur.

Si votre routeur le prend en charge, vous pouvez analyser la journalisation du routeur dans le journal système de votre ordinateur. Vous recevez maintenant un message dans le syslog lorsqu'une connexion est établie, que vous pouvez ensuite envoyer à votre environnement de bureau si vous le souhaitez.

Mais pour répondre à la question, ajoutez un script à votre cron qui fera un nmap -sn, dirigez-le dans un fichier temporaire et comparez-le avec la situation précédente en utilisant diff. Diff out signifie hors ligne, diff en ligne.

Un exemple approximatif (gère uniquement le premier changement d'adresse IP par exécution):

#!/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
1
Requist