Vous utilisez surement déjà la commande « mail » pour envoyer vos notifications de script par mail.

echo tot | mail -s "title" 

Mais à l’heure des smartphones, il est intéressant de recevoir une notification push! Dans mon cas, j’utilise pushBullet qui a l’avantage d’être multiplateforme!

Vous pourrez donc envoyer des notifications push en ligne de commande linux comme envoyer un simple mail!

Seule limite dans la version gratuite, 500 notifications par mois max. Ce qui est bien suffisant pour de la notification d’erreur de script.

Créer un compte pushBullet

Il faut créer un compte sur le site de pushBullet. Une fois logué avec votre compte Google, allez dans Settings > Account > « Create Access Token ». Copiez le code apparu, il faudra le mettre dans le script dans la variable « accessToken ».compte pushbullet

Ensuite, installez une des applications sur votre smartphone pour recevoir les notifications push :

L’API de pushBullet est disponible sur leur site pour ceux qui veulent aller plus loin.

Le script de notification pushBullet

Vous pouvez le télécharger ici : pushbullet.sh

N’oubliez pas de mettre la clé API dans la variable « accessToken »

#!/bin/bash
# Auteur : Belgotux
# Site : www.monlinux.net
# Licence : CC-BY-NC-SA
# Version : 1.0
# Date : 08/03/18
# changelog
# v1.0 send by pushbullet

providerApi='https://api.pushbullet.com/v2/pushes'
accessToken=''


#send push notification with pushbullet
# see https://www.pushbullet.com
# $1 title
# $2 text body - default $textPushBullet
function sendPushBullet {
	#replace default mesg
	if [ "$1" != "" ] ; then
		subjectPushBullet=$1
	fi
	if [ "$2" != "" ] ; then
		textPushBullet=$2
	fi
	
	#var verification
	if [ "$providerApi" == "" ] || [ "$accessToken" == "" ] ; then
		echo "Can't sen push notification without complete variables for PushBullet" 1>&2
		addLog "Can't sen push notification without complete variables for PushBullet"
		return 1
	fi
	
	tempfile=$(tempfile -p 'nutNotifyPushBullet-')
	curl -s -o $tempfile --header "Access-Token: $accessToken" --header 'Content-Type: application/json' --request POST --data-binary "{\"type\":\"note\",\"title\":\"$HOSTNAME - $subjectPushBullet\",\"body\":\"$textPushBullet\"}" "$providerApi"
	#TODO check return
	rm $tempfile
}


if [ $# != 2 ] ; then
	echo "Error : send message by argument :" 1>&2
	echo "Example : pushbullet.sh \"Title\" \"message with spaces\"" 1>&2
	exit 1
fi

sendPushBullet "$1" "$2"

exit $?

La fonction sendPushBullet du script a été intégrée à mon vieux script de notification nut, afin qu’il évolue avec son temps 🙂

Vous pouvez donc facilement intégrer cette fonction dans vos propres scripts bash si besoin, tant que vous respectez le Creative Common BY-NC-SA

Installer le script de notification push

Il faut être en root pour ceci :

wget -O /usr/local/bin/pushbullet.sh https://www.monlinux.net/wp-content/uploads/pushbullet.sh_.txt
chmod +x /usr/local/bin/pushbullet.sh

Utiliser le script

Exemple d’intégration dans un script :

pushbullet.sh "Title" "message with spaces"

Exemple de fonctionnement du script avec une notification push au moment où le système démarre (pratique pour ceux qui ont un UPS et veulent savoir quand le courant est revenu) :

/usr/local/bin/pushbullet.sh "booting" "$(date '+%d/%m/%y %H:%M:%S') $HOSTNAME booting"

Des améliorations sont possibles, comme vérifier le code de retour de l’API afin de faire un retry au cas où les serveurs de pushBullet ne seraient pas disponibles. Libre à vous de l’améliorer et de partager 😉