Check périphérique DHCP
Publié : 30 mars 2021, 19:55
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.
Sources :
Pushbullet
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
Pushbullet