Comment récupérer une image d’une caméra AirCam Ubiquiti avec une simple commande Wget (Linux) ?
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.

