Check périphérique DHCP

cyril
Site Admin
Messages : 47
Inscription : 29 mars 2021, 21:50

Check périphérique DHCP

Message par cyril »

Bonjour,

L'utilisation de PiHole a créé quelques déconvenues comme l'impossibilité d'accéder à certain site depuis google shopping.

Afin de pouvoir choisir les périphériques qui se verront attribué PiHole et ceux qui auront le DNS de mon FAI, j'ai créé un script qui récupère les adresses MAC des machine qui récupère une adresse IP.

Il stock dans un fichier waitval.txt les périphériques qui ne sont pas encore présents dans le fichier de conf dhcpd.conf ou, si ils ont déjà été traité, dans waitval.txt.

Il envoi une notification via un script pushbullet.

Code : Tout sélectionner

#!/bin/bash
# Initiation des variables
reptrv=/mnt/nas/data/script/dhcp
repscr=/mnt/nas/data/script
repfic=/etc/dhcp
replog=/var/log
tmp=/tmp/chkdhcp.txt
# fonctions
test_ret () {
if [ $? != 0 ]
then
 echo "Erreur lors de verif. Arrêt prématuré du script"
 $repscr/push.sh "DHCP" "Erreur lors de la vérification DHCP"
 exit 1
fi
}

# Création des fichiers de travail
if [ -f $tmp ]
then
 echo "Supression du fichier /tmp/chkdhcp.txt"
 rm $tmp
 test_ret
fi

# récupération des adresse mac
cat $replog/dhcpd.log | grep DHCPACK | cut -d " " -f10 >> $tmp
test_ret

# Boucle qui test la présence dans le fichier dhcpd.conf
for i in $(cat $tmp | uniq)
do
 grep $i $repfic/dhcpd.conf
 if [ $? = 0 ]
 then
  echo "$i déjà présent"
 else
  echo "$i n'est pas présent"
  grep $i $reptrv/waitval.txt
  if [ $? != 0 ]
  then
#   echo "Nouveau péripherique a vérifier"
#   $repscr/push.sh "DHCP" "Nouveau péripherique a vérifier"
   hostname=$(grep $i $replog/dhcpd.log | tail -n 1 | cut -d " " -f12)
   if grep -q 'via' <<< "$hostname"
   then
    cpt=0
    hostname=unknown
    while [ $(grep $hostname $repfic/dhcpd.conf) = 0 ] || [ $(grep $hostname $reptrv/waitval.txt) = 0 ]
    do
     hostname=unknown$cpt
    done
   fi
   echo "  host $hostname { hardware ethernet $i; }" >> $reptrv/waitval.txt
   $repscr/push.sh "DHCP" "Nouveau péripherique $hostname $i à vérifier"
  fi
 fi
done
Sources :
Pushbullet
Répondre