"Después del juego es antes del juego"
Sepp Herberger

miércoles, 12 de mayo de 2021

Hacer una foto con la webcam, guardarla y enviarla por correo.

Ya hemos hecho entradas que tratan sobre monitorizar la actividad del usuario que está trabajando en un ordenador: En esta ocasión el problema era algo distinto: por razones que no vienen a cuento se necesitaba capturar una foto con la webcam y enviarla por correo a una dirección predeterminada.

Para hacerlo usaremos 2 herramientas:
  • fswebcam: es una utilidad para sacar fotos con la cámara.
  • mailsend-go: versión actualizada de una utilidad para enviar correos (y ficheros adjuntos) usando un servidor SMTP externo, por ejemplo una cuenta de gmail. Como no está empaquetada en Ubuntu hay que descargar el ejecutable y copiarlo a mano en el equipo.
El script que usaremos será:
# cat /usr/local/bin/click-and-mail

#!/bin/bash

#Añadir el parametro /m si queremos enviar un correo con el resultado de la captura

REMITENTE="cuentaenvio@gmail.com"
DESTINATARIO="cuentadestino@gmail.com"
PASSWORD="password1234"
EQUIPO=$HOSTNAME
MAIL=$1  # "/m" enviar correo, vacio: no enviarlo
FECHA=$(date '+%Y-%m-%d-%H:%M')
LOG="/root/.picture"

mkdir -p $LOG

if [ -e /dev/video0 ]
then 
    /usr/bin/fswebcam -d /dev/video0  --scale "640x480" "/tmp/snapshot.jpg"
    test "$MAIL" == "/m"  && /usr/local/bin/mailsend-go -sub "Foto $HOSTNAME"  -smtp smtp.gmail.com -port 587     \
             auth -user $REMITENTE -pass "$PASSWORD" -from "$REMITENTE" -to  "$DESTINATARIO"  \
             body      -msg "Foto"  attach      -file "/tmp/snapshot.jpg"
    mv -f "/tmp/snapshot.jpg" "${LOG}/s${FECHA}.jpg"
    echo "Captura $FECHA" >>  ${LOG}/capture.log
else
    test "$MAIL" == "/m" && /usr/local/bin/mailsend-go -sub "Foto $HOSTNAME"  -smtp smtp.gmail.com -port 587     \
             auth -user $REMITENTE -pass "$PASSWORD" -from "$REMITENTE" -to  "$DESTINATARIO"  \
             body      -msg "Foto no posible, no camara"
    echo "Fallo captura $FECHA" >>  ${LOG}/capture.log
fi

exit 0
Comentemos:
  • El parámetro "/m" hace que la foto se envíe por correo. Si no se pone solamente se guardará en local.
  • Usamos para el envío una cuenta de gmail, tipo cuentaenvio@gmail.com. Para que funcione el envío de correos desde mailsend-go hay que habilitar en esa cuenta de Google el uso de aplicaciones poco seguras.
  • El correo se envia a otra cuenta de Gmail o de cualquier otro correo, para eso no hay problema.
  • En la carpeta local /root/.picture se guardan todas las imágenes tomadas. En /root/.picture/capture.log un log del proceso.
  • Si la cámara está desactivada o no se encuentra, se comunica al usuario por correo.
¿Cómo y cúando ejecutamos el script?: eso ya depende de lo que queramos hacer. Podemos entrar por ssh en la máquina y ejecutarlo, lanzarlo desde el crontab cada cierto tiempo, lanzarlo al iniciar sesión o cuando haya algún evento que monitoricemos..


Esa máquina llamada OSIRIS-REx ha dado un piquito al asteroide Bennu y hace unas horas a emprendido su vuelta a la Tierra con unos gramos de polvo, piedras y otra materia de ese cuerpo celeste. Creo que así empezaba La Amenaza de Andrómeda. No tiren sus mascarillas aunque estén vacunados.

No hay comentarios:

Publicar un comentario