Comment récupérer une image d’une caméra AirCam Ubiquiti avec une simple commande Wget (Linux) ?

aircam

Commencez par recopier le script à la fin du billet dans un fichier snap.sh par exemple. Rendez ensuite le script exécutable :

chmod +x snap.sh

puis exécutez le :

sh snap.sh votre_ip:port admin password fichier.jpg

Remplacez admin, password par vos identifiants de connexion ou ne les indiquez pas si vous utilisez le couple ubnt/ubnt de base.
Port est le port http (80 par défaut) et peut-être oublié si vous ne l’avez pas modifié.
fichier.jpg sera le fichier image capturé.

Par exemple :

sh snap.sh 192.168.1.121:82 admin pass snap.jpg

Et voilà, vous avez désormais une image haute résolution snap.jpg que vous allez pouvoir exploiter à volonté, l’envoyer par email, la rendre visible sur un site internet, etc. Il est même possible d’automatiser la capture en lançant le script snap.sh à intervalle régulier via crontab pour afficher une image en temps réel de votre environnement à vos visiteurs, mais ceci est une autre histoire.

Ce petit script fonctionne fort bien sur un Raspberry Pi et apporte quelques idées d’expérimentations, notamment avec son serveur web intégré : nous en reparlerons prochainement 😉

Le script :

#!/bin/sh

usage() {
	echo "airCam snapshot grabber v0.1 (c) Ubiquiti Networks, Inc."
	echo "Usage: $0 <aircam IP> [<username> <password> <output file>]"
}

if [ $# -lt 1 ]; then
	usage $0
	exit 10
fi

IP=$1
USER=$2
PASS=$3
SNAPSHOT_FILE=$4

if [ -z "$USER" ]; then
	USER=ubnt
fi

if [ -z "$PASS" ]; then
	PASS=ubnt
fi

if [ -z "$SNAPSHOT_FILE" ]; then
	SNAPSHOT_FILE=aircam-snapshot.jpg
fi

COOKIES="--cookie cookies.txt  --cookie-jar cookies.txt"
AUTH="--form-string username=$USER --form-string password=$PASS"
URL=http://${IP}

# fetch cookie
curl -s $COOKIES -L ${URL}/login.cgi -o /dev/null
TMPFILE=$(mktemp .ac-snap.tmp.XXXXXX)
echo "Recuperation de l'image depuis $IP..."
curl -s $COOKIES -H "Expect:" $AUTH -L ${URL}/login.cgi?uri=/snapshot.cgi?chan=0 -o $TMPFILE

# check downloaded file
file $TMPFILE | grep JPEG >/dev/null 2>&1
RC=$?
if [ 0 -eq $RC ]; then
	echo "Chargement reussi."
	mv $TMPFILE $SNAPSHOT_FILE
	echo "Sauvegarde dans '$SNAPSHOT_FILE'"
else
	echo "Erreur ! Mauvais login/mot de passe ?"
fi

rm -f $TMPFILE
exit $RC

Selon une idée sur cette page.