Recevoir l’ip au démarrage d’un Raspberry via Pushover

J’utilise depuis un peu plus d’un an l’application Pushover (pour iOS) combinée au service web UptimeRobot. Grâce à cette association, je peux avoir un message push m’indiquant l’indisponibilité d’un serveur, ou plus spécifiquement d’une application web ou d’un service.

Depuis peu, je code des démons backend en .Net Core, encapsulés dans des containers Docker, eux-même exposés sur un Raspberry Pi 3. (vous suivez ?).
Etant souvent sur différents LAN pour coder, je me retrouve à avoir mon Raspi connecté et alimenté mais sans UI pour connaître son adresse IP. Le mieux serait d’apposer IP statique en fonction de ma MAC address mais je n’ai pas la main sur le plan DHCP. A savoir également qu’un ping vers le hostname de mon Raspi n’est pas résolu une fois sur deux.

J’en suis venu à me faire cette remarque : étant donné que les réseaux sur lesquels je connecte mon Raspi disposent toujours d’une sortie internet, pourquoi ne pas automatiser l’envoi de l’IP au chargement de celui-ci via une notification push ? Je vous propose de ce fait de découvrir comment j’ai procédé.

Pour se faire je fais un script qui comprendra 3 étapes :

  • Une pause de 30 secondes
  • La récupération de l’ip dans une chaîne
  • L’envoi par POST HTTP au service de Pushover

Tout d’abord, pourquoi une pause de 30 secondes ? Parce que mon script sera chargé à l’initialisation de la distrib et qu’il y a de fortes chances que la couche réseau ne soit pas encore chargée.

sleep 30

Ensuite, la récupération de l’IP dans une variable OUTPUT

OUTPUT="$(/sbin/ifconfig eth0| grep 'inet ')"

Enfin, l’envoi de la chaîne au webservice REST de Pushover grâce à curl.

curl \
--form-string "token=APP_TOKEN" \
--form-string "user=USER_TOKEN" \
--form-string "message=${OUTPUT}" \
https://api.pushover.net/1/messages.json

Le résultat final :

#!/bin/bash
sleep 30
OUTPUT="$(/sbin/ifconfig eth0| grep 'inet ')"
curl \
--form-string "token=APP_TOKEN" \
--form-string "user=USER_TOKEN" \
--form-string "message=${OUTPUT}" \
https://api.pushover.net/1/messages.json

Il suffit d’enregistrer le fichier dans l’arborescence locale et d’appliquer les droits d’exécution au fichier.

chmod +x /push_ip.sh

Pour terminer, on ajoute un déclencheur pour cron signifiant qu’il exécute le script au démarrage du Raspi :

crontab -e
@reboot /mon_chemin/push_ip.sh

Le résultat bien que brut est plutôt correct 😉