Sistema de videovigilancia con detector de movimiento Motion para Rasberry

¿QUÉ ES Y COMO FUNCIONA MOTION?

Motion es un software open source escrito en C que realiza las funciones de un sistema de videovigilancia.
Su forma de trabajar es la siguiente:
  1. Motion está constantemente monitorizando las imágenes captadas por una o varias cámaras.
  2. Si entre las imágenes consecutivas captadas por una de las cámaras no hay absolutamente ninguna diferencia, Motion no realizará ninguna acción.
  3. Si entre imágenes consecutivas se observan variaciones importantes, la cámara empezará a tomar fotografías y a grabar vídeo hasta que la diferencia entre imágenes consecutivas se vuelve a estabilizar.
Por lo tanto, en el momento que una persona entre dentro del perímetro de vigilancia de una cámara, Motion empezará a capturar imágenes y grabará un vídeo. De esta forma podremos detectar e identificar la persona que ha vulnerado el perímetro de seguridad.

FUNCIONES ADICIONALES PROPORCIONADAS POR MOTION

Podemos usar Motion como un sistema de videovigilancia, pero aparte ofrece otras funcionalidades como por ejemplo las siguientes:
  1. Realizar timelapse.
  2. Capturar imágenes de forma periódica.
A lo largo del artículo verán las opciones de configuración a usar para poder realizar un timelapse o para capturar imágenes.

REQUISITOS NECESARIOS PARA MONTAR EL SISTEMA DE VIDEOVIGILANCIA

Los requisitos para montar un sistema de videovigilancia siguiendo las instrucciones de este tutorial son los siguientes:
  1. Disponer de una Raspberry Pi o cualquier ordenador con el sistema operativo GNU-Linux.
  2. La distribución GNU-Linux que utilicen tiene que usar paquetería .deb.
  3. Como mínimo deben disponer de una Webcam USB. La webcam tiene que ser compatible con el sistema operativo GNU-Linux que están usando.
Si cumplen con los requisitos mencionados pueden seguir los sencillos pasos que verán a continuación.

COMPROBAR LA COMPATIBILIDAD DE LA CÁMARA CON EL SISTEMA OPERATIVO

Enchufamos una webcam USB a la Raspberry Pi o a nuestro ordenador con el sistema operativo GNU-Linux. Acto seguido ejecutamos el siguiente comando en la terminal:
lsusb
En mi caso la salida del comando es la siguiente:
Bus 001 Device 006: ID 0c45:627b Microdia PC Camera (SN9C201 + OV7660)
Bus 001 Device 004: ID 0930:6544 Toshiba Corp. Kingston DataTraveler 2.0 Stick (2GB)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Observando los resultados de la salida puedo afirmar con total seguridad que mi webcam ha sido detectada. En el caso que no sea detectada es muy posible que su webcam no sea compatible con el sistema operativo Linux que están usando.
En el caso que tengan que comprar una webcam para usar Motion en una Raspberry Pi les recomiendo que visiten el siguiente enlace:
En el enlace encontrarán algunas de las webcam que son compatibles con el sistema operativo Raspbian. Si compran una de las webcam de la lista motion debería funciona sin problema alguno.

INSTALAR EL SISTEMA DE VIDEOVIGILANCIA MOTION

Existen varias opciones para instalar el software Motion. La primera de ellas es a través de los repositorios de nuestra distribución, mientras que la segunda es a través de los archivos binarios que están en la web del desarrollador.

Instalar Motion a través de los repositorios de su distribución

Para instalar Motion tan solo tienen que ejecutar el siguiente comando en la terminal:
sudo apt-get install motion
Acto seguido se instalará Motion. De este modo tan sencillo ya tendremos instalado un sistema de videovigilancia.

Instalar Motion con los binarios de la plataforma del desarrollador

Existe la posibilidad que la versión de Motion de los repositorios no sea la más actual. Para instalar la última versión estable pueden seguir las siguientes instrucciones:
Accedan a la siguiente página web:
Una vez dentro de la página web:
  1. Posicionen el puntero del ratón sobre la versión de Motion que quieren instalar. Como en mi caso quiero instalar la última versión de Motion en una Raspberry Pi con Debian Jessie posiciono el puntero del ratón sobre la opción pi_jessie_motion_4.1.1-1_armhf.deb
  2. Presionen el botón derecho del ratón.
  3. Cuando aparezca el menú contextual cliquen encima de la opción Copiar la ruta del enlace.
Averiguar la ruta para descargar Motion
Seguidamente nos conectamos vía SSH al dispositivo que queremos instalar Motion. A continuación realizamos lo siguiente:
  1. Escribimos wget y dejamos un espacio con la barra espaciadora.
  2. Seguidamente presionamos el botón derecho del ratón y cuando aparezca el menú contextual clicamos sobre la opción Pegar.
  3. Finalmente presionamos Enter y se descargará el paquete binario para instalar Motion.
Pegar la URL de descarga de Motion
Una vez descargado el binario ejecutamos el siguiente comando para ver el nombre del paquete que acabamos de descargar:
ls -l
Tal y como se puede ver en la captura de pantalla el archivo binario descargado es:
pi_jessie_motion_4.1.1-1_armhf.deb
Nombre del paquete descargado
Para instalar el paquete que acabamos de descargar instalamos gdebi ejecutando el siguiente comando en la terminal:
sudo apt-get install gdebi
Acto seguido ejecutamos el comando sudo gdebi seguido del nombre del paquete deb que acabamos de descargar.
sudo gdebi pi_jessie_motion_4.1.1-1_armhf.deb
Justo después de ejecutar el comando se nos preguntará si queremos instalar el paquete pi_jessie_motion_4.1.1-1_armhf.deb. Respondemos que Sí y presionamos Enter. Seguidamente se procederá a la instalación de Motion.

CONFIGURAR MOTION COMO SISTEMA DE VIDEOVIGILANCIA

Una vez instalado Motion tan solo tenemos que adaptar su configuración a nuestras necesidades.
Antes de modificar la configuración realizaremos una copia de seguridad del archivo de configuración. Para ello ejecutamos el siguiente comando en la terminal:
sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bak
Una vez realizada la copia de seguridad editaremos el fichero de configuración ejecutando el siguiente comando en la terminal:
sudo nano /etc/motion/motion.conf
Una vez dentro del fichero de configuración podemos modificar los siguientes parámetros:

Modo de ejecución de Motion

Para configurar el modo en que se inicia Motion deben modificar los siguientes parámetros:
Parámetro
Valor
daemon
on (De esta forma Motion se ejecutará en segundo plano. Elegir la opción off puede ser útil para detectar errores en la ejecución del programa.)
setup_mode
off (permite activar o desactivar el modo de configuración. Si cambiamos el parámetro a on activaremos el modo de configuración. El modo configuración nos mostrará más información de lo normal para intentar ajustar el funcionamiento de motion. En mi caso recomiendo dejarlo en off. Si queremos arrancar en modo configuración lo podemos hacer ejecutando el comando sudo motion -s)

Configuración de las imágenes capturadas por la cámara

Con los siguientes parámetros del archivo de configuración podemos configurar las imágenes capturadas por nuestra cámara o webcam:
Parámetro
Valor
rotate
0 (Indicar la rotación que queremos aplicar a las imágenes capturadas por la cámara. Posibles valores de este parámetro son 0, 90, 180 o 270.)
width
640 (La anchura de las imágenes en píxeles que capturará nuestra cámara.)
height
480 (La altura de las imágenes en píxeles que capturará nuestra cámara.)
framerate
5 (Las imágenes por segundo que capturará la cámara. Los valores a elegir son entre 2 y 100 capturas por segundo.)
auto_brightness
Off (Permite ajustar el nivel de brillo de las imágenes y vídeos de forma automática. Está función únicamente debe activarse en cámaras que dispongan de función autobrillo.)
brightness
0 (Indicamos el nivel de brillo que queremos que tengan las imágenes captadas por nuestra cámara. Podemos seleccionar un valor entre 0 y 255.)
contrast
0 (Para indicar el nivel de contraste que queremos que tengan las imágenes captadas por nuestra cámara. Podemos seleccionar un valor entre 0 y 255.)
saturation
0 (Para indicar el nivel de saturación que queremos que tengan las imágenes captadas por nuestra cámara. Podemos seleccionar un valor entre 0 y 255.)
output_pictures
on (De esta forma no se borran las imágenes capturadas para realizar el vídeo. Por lo tanto al finalizar la captura tendremos un vídeo y la totalidad de imágenes usadas para construir el vídeo.)
quality
75 (Para seleccionar la calidad de las fotografías capturadas. Podemos seleccionar un valor entre 1 y 100 dónde 1 será la peor calidad y 100 la mejor calidad.)
picture_type
jpeg (Para seleccionar el formato de la foto capturada. Otros formatos posible son ppm o webp.)
text_right
%Y-%m-%d\n%T-%q (Definimos el texto que aparecerá en la parte inferior derecha de cada una de las imágenes capturadas. Si queremos queremos que no aparezca ningún texto dejamos la opción en blanco.)
picture_filename
%v-%Y%m%d%H%M%S-%q (Seleccionar el formato de nombre en que se almacenarán las imágenes capturadas.)

Configuración para la codificación del vídeo generado por Motion

Para configurar los archivos de vídeo que generará Motion podemos modificar los siguientes parámetros del archivo de configuración:
Parámetro
Valor
ffmpeg_output_movies
on (Con el valor on usamos ffmpeg para codificar los vídeos. Si especificáramos la opción off no se generaría ningún vídeo.)
ffmpeg_bps
400000 (Es la tasa de muestreo que se usará en el caso que hayamos seleccionado crear un vídeo con una tasa de muestro constante. En este parámetro podemos usar valores entre 0 y 9999999.)
ffmpeg_variable_bitrate
0 (Al seleccionar 0 los vídeos generados dispondrán de una tasa de muestro constante. Si queremos definir una tasa de muestreo variable deberán seleccionar valores entre 2 y 31 donde 31 será la opción que proporciona peor calidad.)
ffmpeg_video:codec
mkv (Seleccionamos el tipo de contenedor que almacenará nuestro vídeo. En mi caso selecciono mkv pero podemos usar otros contenedores como mpeg4, msmpeg4, swf, flv, ffv1, mov, mp4 y hevc.)
movie_filename
%v-%Y%m%d%H%M%S (Se define el nombre que tendrán las vídeos capturados por Motion.)

Seleccionar la ubicación donde se guardan las fotos y vídeos de Motion

Para definir donde se guardaran la totalidad de imágenes y vídeos generados por Motion deberán configurar el siguiente parámetro del archivo de configuración.
Parámetro
Valor
target_dir
/media/downloads (Elegimos la ubicación donde se guardarán las imágenes y vídeos capturados. En mi caso la totalidad de vídeos y fotos se guardarán en la ubicación /media/downloads.)

Visualizar el contenido que están captando las webcam

Motion dispone de un pequeño servidor web en el que podemos visualizar en tiempo real las imágenes que están captando cada una de las webcam. Para configurar el miniservidor web debemos modificar los siguientes parámetros del archivo de configuración:
Parámetro
Valor
daemonstream_port
8081 (Definimos el puerto en el que estará estuchando el servidor web que mostrará el contenido captado por las cámaras. Podemos elegir cualquier puerto siempre y cuando esté disponible.)
stream_quality
50 (Seleccionamos la calidad de las imágenes que veremos a través de nuestro navegador web. En este parámetro podemos seleccionar un valor de 1 a 100.)
stream_maxrate
1 (Definimos las imágenes por segundo que mostrará nuestra cámara web cuando haga funciones de streaming.)
stream_localhost
off (Seleccionando la opción off cualquier equipo de nuestra red local podrá tener acceso al servidor web que está emitiendo las imágenes captadas por nuestra cámara. Si elegimos la opción on únicamente el equipo que está corriendo Motion podrá acceder a la interfaz web para visualizar el contenido captado por las webcam.)
stream_auth_method
2 (Seleccionar el método de autenticación para poder acceder al servidor web y ver lo que está captando nuestra cámara. Otros valores disponibles 0, 1 y 2. En mi caso selecciono el método de autenticación 2 porque es el más seguro. Si no quieren usar ningún método de autenticación seleccionen la opción 0.)
stream_authentication
usuario:contraseña (Definimos un usuario y contraseña para poder acceder al servidor web. Cada vez que se conecten al servidor web para visualizar el contenido captado por las webcam deberán usar este usuario y contraseña. Este parámetro no tendrá efecto si el valor del parámetro stream_auth_method es 0.)

Configurar y controlar Motion a través de una interfaz web

Motion dispone una interfaz web para consultar y modificar los parámetros de configuración. Para poder acceder al panel web de configuración deben modificar los siguientes parámetros del archivo de configuración:
Parámetro
Valor
webcontrol_port
8080 (Definimos el puerto en el que estará estuchando el servidor web que permitirá consultar y modificar los parámetros de configuración de Motion. Podemos elegir cualquier puerto siempre y cuando esté disponible.)
webcontrol_localhost
off (Seleccionando la opción off podremos acceder al contenido al panel de configuración desde cualquier equipo. En el caso que seleccionáramos la opción on únicamente podríamos acceder al panel de configuración web desde el equipo que está corriendo Motion.)
webcontrol_authentication
usuario:contraseña (Si en el parámetro stream_auth_method seleccionamos la opción 1 o 2, en webcontrol_authentication definimos el nombre de usuario y contraseña a usar para ingresar en el panel de administración web.)
webcontrol_parms
2 (Indicamos la profundidad de parámetros que podemos regular a través de la interfaz web. Podemos seleccionar 0, 1, 2 y 3. En función del número seleccionado podremos modificar más o menos parámetros. Seleccionando la opción 0 no podremos modificar ningún parámetro. La opción que permitirá configurar más parámetros es la 2.)
Nota: En el personal no utilizo esta opción. Prefiero modificar la configuración a través del archivo de configuración.

Configuración de la sensibilidad de la cámara para que empiece a grabar

En el fichero de configuración hay una serie de parámetros que nos permiten configurar la sensibilidad de nuestra cámara. Estos parámetros son los siguientes:
Parámetro
Valor
threshold
1500 (Para configurar la sensibilidad con la que la cámara empezará a tomar imágenes y grabar vídeo.1500 significa que la cámara empezará a grabar cuando detecte que al menos 1500 píxeles de la cámara han variado de una imagen a otra. En este apartado podemos seleccionar valores entre 1 y 2147483647.)
threshold_tune
off (Si el valor es on, Motion ajustará el parámetro treshold de forma automática. En mi caso tengo seleccionada la opción off.)
noise_level
32 (Parámetro que se usa para que el ruido de la cámara no genere falsos positivos de movimiento. Podemos elegir un número entre el 1 y el 255. Cuanto más grande sea el número menor será el número de falsos positivos. El número que asignamos a este parámetro da una tolerancia a la variación de cada uno de los píxeles de la imagen que capta la cámara. Este parámetro se tiene que tener en cuenta en ambientes oscuros.)
noise_tune
on (Si el valor es on, Motion ajustará de forma automática el parámetro noise_level. Si es off siempre aplicará el valor que asignamos al parámetro noise_level.)
lightswitch
0 (Valor entre el 0 y el 100 que sirve para ignorar o no ignorar los cambios repentinos de luz. Con el valor 0 no se ignorarán los cambios repentinos de luz. Por lo tanto, cuando una habitación esté oscura y se encienda la luz se empezará a capturar imágenes y vídeo.)

Parámetros de configuración para realizar un timelapse

Motion puede ser usado para otros menesteres como por ejemplo realizar un timelapse. Para ello dentro del fichero de configuración disponemos de los siguientes parámetros:
Parámetro
Valor
timelapse_interval
60 (Frecuencia en segundos con que se realizará una captura de imagen para realizar un timelapse. En este parámetro se puede elegir un valor entre 0 y 2147483647 segundos)
timelapse_mode
daily (Indica la frecuencia con que se generará el vídeo que contiene el timelapse. La totalidad de valores que podemos elegir son hourly, daily, weekly-sunday, weekly-monday, monthly y manual.)
timelapse_fps
30 (Las imágenes por segundo que contendrá el timelapse que se creará.)
timelapse_codec
mpg (Para seleccionar el contenedor de vídeo en el que se almacenará el timelapse. Tenemos 2 opciones disponibles, mpg y mpeg4.)
timelapse_filename
%Y%m%d-timelapse (para determinar el nombre que tendrá el vídeo que contiene el timelapse.)
Si en el fichero de configuración introducimos los parámetros que acabamos de leer en la tabla obtendremos el siguiente resultado:
  1. Realizaremos un timelapse de las imágenes capturas durante 1 día.
  2. Se capturará una imagen cada 60 segundos. Por lo tanto se realizará un timelapse que contendrá 1440 imágenes.
  3. En cada segundo del timelapse se mostrarán 30 imágenes por segundo. Por lo tanto la duración del vídeo que contendrá el timelapse será de 48 segundos.
  4. El contenedor del vídeo que generaremos será .mpg.

Realizar capturas de imagen de forma periódica

Si tan solo pretendemos usar Motion para realizar una captura de pantalla cada X segundos podemos usar los siguientes parámetros en el fichero de configuración
Parámetro
Valor
snapshot_interval
0 (Para realizar una captura de imagen cada x segundos. Si seleccionamos 0 no se hará ninguna captura de imagen. Si usamos el valor 10 se capturará una imagen cada 10 segundos.)
snapshot_filename
%v-%Y%m%d%H%M%S-snapshot (Para definir el nombre que tendrán las capturas de imagen.)

Configurar más de una cámara en el sistema de videovigilancia

Para usar varias cámaras con el software Motion tenemos que tener en cuenta los siguientes aspectos.
Las configuraciones especificadas en el archivo /etc/motion/motion.conf se aplicarán a todas las cámaras del sistema de videovigilancia.
Si queremos realizar una configuración específica a una de las cámaras deberemos usar los siguientes archivos de configuración:
/etc/motion/camera1.conf
/etc/motion/camera2.conf
/etc/motion/camera3.conf
/etc/motion/camera4.conf
Por lo tanto, para trabajar con 2 cámaras deberemos editar 3 ficheros que son los siguientes:
  1. El fichero (/etc/motion/motion.conf) que contendrá la configuración común para las 2 cámaras.
  2. El segundo fichero (/etc/motion/camera1.conf) que contendrá la configuración específica para la cámara 1.
  3. El último fichero (/etc/motion/camera2.conf) que especificará la configuración para la cámara 2.
A modo de ejemplo. Si tenemos 2 cámaras y queremos que cada una de las cámaras guarde las fotos y vídeos en una ubicación específica accedemos al archivo de configuración principal ejecutando el siguiente comando en la terminal:
sudo nano /etc/motion/motion.conf
Acto seguido localizamos las siguientes líneas y las comentamos:
# videodevice /dev/video0
# target_dir /media/downloads
Seguidamente, al tener 2 cámaras tenemos que buscar y descomentar las siguientes líneas:
camera /etc/motion/camera1.conf
camera /etc/motion/camera2.conf
Finalmente guardamos los cambios y cerramos el fichero.
El siguiente paso consiste en definir la ubicación donde guardará las imágenes y vídeos la primera de las cámaras. Para ello ejecutamos el siguiente comando en la terminal:
sudo nano /etc/motion/camera1.conf
Cuando se abra el editor de textos nano definiremos la videocámara que estamos configurando y la ubicación donde guardaremos las imágenes y los vídeos. Para ello escribiremos el siguiente código:
videodevice /dev/video0
target_dir /media/downloads/camara1
Una vez realizados los cambios los guardamos y cerramos el fichero. Ahora tan solo tenemos que repetir el mismo proceso para la segunda cámara. Para ello ejecutamos le siguiente comando en la terminal:
sudo nano /etc/motion/camera2.conf
Al abrirse el editor de textos nano pegamos el siguiente código:
videodevice /dev/video1
target_dir /media/downloads/camara2
Finalmente guardamos los cambios y cerramos el fichero. La próxima vez que reiniciemos Motion, la cámara 1 y la cámara 2 funcionarán del mismo modo, pero con la siguiente particularidad:
  1. La totalidad de imágenes y vídeos captados por la cámara 1 serán almacenados en la ubicación /media/downloads/camara1.
  2. Las imágenes y vídeos de la cámara 2 serán almacenados en la ubicación /media/downloads/camara2.

OTROS PARÁMETROS PARA CONFIGURAR MOTION

Dentro del fichero de configuración existen más parámetros que no se han mencionado en este artículo. Si los quieren consultar pueden visitar la siguiente página web:

COMO INICIAR EL SISTEMA DE VIDEOVIGILANCIA MOTION

Para iniciar el sistema de videovigilancia tan solo tenemos que ejecutar el siguiente comando en la terminal:
sudo motion
Acto seguido se activará el sistema de videovigilancia y empezaremos a obtener resultados.
Si queremos que Motion se inicie de forma automática al iniciar nuestro equipo tenemos que ejecutar el siguiente comando en la terminal:
sudo nano /etc/default/motion
Cuando se abra el editor de textos cambiamos la siguiente linea:
start_motion_daemon=no
por la siguiente:
start_motion_daemon=yes
De este modo, cada vez que arranquemos o reiniciemos nuestro equipo se activará el sistema de videovigilancia de forma automática.

COMPROBAR QUE MOTION ESTA FUNCIONANDO

Para comprobar que Motion está funcionando de forma adecuada podemos realizar las siguientes comprobaciones.

Comprobar que se están generando las imágenes y vídeos

Una vez iniciado Motion accedemos a la ubicación que almacena las imágenes y vídeos. Si el sistema de videovigilancia a detectado algún tipo de movimiento veremos que está capturando imágenes y vídeos.
Imágenes y vídeos capturados por Motion
Si visualizamos una imagen o vídeo podremos ver las lo que ha captado el sistema de videovigilancia.
Imagen capturada por mi webcam
Nota: Las imágenes captadas por mi webcam se ven borrosas por diversos motivos. En el caso que tengáis una webcam decente las imágenes se verán perfectas.

Acceder al servidor web para visualizar y configurar la cámara

Para ver las imágenes que está captando nuestra cámara a través de un equipo perteneciente a nuestra red local tenemos que realizar lo siguiente:
  1. Abrir un navegador web
  2. En la barra de direcciones hay que escribir IP del equipo en que instalamos Motion.
  3. Seguidamente tecleamos :.
  4. Finalmente tecleamos el puerto que está usando el servidor web de Motion y presionamos Enter.
Por lo tanto, en mi caso escribo la siguiente dirección en la barra de direcciones y presiono la tecla Enter.
192.168.1.200:8081
El resultado obtenido es el siguiente:
Ver lo que capta la cámara en todo momento
Si lo precisamos, mediante port forwarding también podremos visualizar lo que está captando nuestra cámara de seguridad desde cualquier ubicación fuera de nuestra red local.
Si queremos acceder al panel de administración web tan solo tenemos que cambiar el puerto 8081 por el puerto en que está escuchando el panel de administración web. Por lo tanto en mi caso la dirección a introducir en la barra de direcciones de mi navegador es la siguiente:
192.168.1.200:8080
Panel de configuración web de Motion

COMO ARRANCAR Y PARAR EL SISTEMA DE VIDEOVIGILANCIA

Si en algún momento queremos parar el sistema de videovigilancia tan solo tenemos que acceder a una terminal local o remota y ejecutar el siguiente comando:
sudo killall motion
Si quieren volver a arrancar el servicio de videovigilancia tendrán ejecutar el siguiente comando en la terminal:
sudo motion
En el caso que únicamente pretendan saber si el servicio está activo pueden ejecutar el siguiente comando en la terminal:
sudo service motion status

RECOMENDACIONES ÚTILES EN EL CASO QUE USÉIS MOTION

En el artículo únicamente se han mostrado algunas de las opciones que ofrece Motion. Si usan Motion con regularidad les ruego que tengan en cuenta los siguientes consejos:
  1. Podemos implementar un sistema de alerta vía email. De esta forma cada vez que Motion capte movimiento se nos enviará una notificación vía email.
  2. Con el tiempo se acumularan grandes cantidades de imágenes y vídeos que llenarán nuestra capacidad de almacenamiento. Para solucionar este inconveniente podemos crear un trabajo cron que borre el contenido del directorio que almacena fotos y vídeos de forma periódica.
  3. Mediante un software como rclone podemos subir las imágenes y vídeos generados a una nube privada.
  4. Mediante los trabajos cron podemos programar el sistema de videovigilancia para que se inicie y pare en las horas que nosotros creamos conveniente.
Si quieren añadir recomendaciones adicionales las pueden dejar en los comentarios del artículo.

Copia de seguridad de un servidor por ssh

Suponiendo que un servidor ssh está disponible en cada máquina (apt-get install openssh-server):





Ejemplo 1.

Copiar el disco duro sda en un ordenador remoto por ssh



A escribir en la máquina a la que queremos hacer una copia.

La copia se guardará en un ordenador remoto (cuyo usuario es "servidor" y la ip es "192.168.0.10").



dd if=/dev/sda | gzip -c | ssh servidor@192.168.0.10 "dd of=copia.dd.gz"




Y para restaurar la copia de aquel ordenador remoto, también desde la misma máquina.

sudo su

ssh servidor@192.168.0.10 "dd if=copia.dd.gz" | gunzip -c | dd of=/dev/sdb





Ejemplo 2.

Copiar el disco duro sda que está en un ordenador remoto por ssh



Ahora estamos en la máquina "servidor", donde queremos guardar la copia de seguridad del disco del ordenador remoto.

Suponemos que el ordenador remoto está en 192.168.0.37, tiene un usuario "pepe" pero lo importante es que el usuario "root" tiene contraseña (sudo su; passwd)



ssh root@192.168.0.37 "dd if=/dev/sda |gzip -c" | dd of=copia.dd.gz




Y para restaurar la copia a aquel ordenador remoto.

dd if=copia.dd.gz | ssh root@192.168.0.37 "gunzip -c | dd of=/dev/sda"





Ejemplo 3.

Usar sshfs es muy cómodo tanto para mandar una copia como para tomarla para restaurar un equipo.



Con sshfs montamos una carpeta remota (apt-get install sshfs).



mkdir montaje

sshfs usuario@ip_remota: montaje



Ahora la carpeta "montaje" mostrará el contenido del equipo remoto y podremos copiar o tomar los archivos que necesitemos con el método que más nos guste.

Si estuvieran las copias en otra carpeta que no fuera la carpeta personal del usuario... ssh usuario@ip_remota:/home/usuario/carpeta_de_backups montaje







http://clona.pbworks.com/w/page/31878782/Por%20red%20con%20ssh​

Copia de seguridad de un servidor en otro disco duro

La pérdida de datos es costoso. Por lo menos, la pérdida de datos críticos tienen un impacto financiero en las empresas de todos los tamaños. En algunos casos, puede costarle su puesto de trabajo. He visto casos en que los administradores de sistemas han aprendido esto de la manera más  difícil.

Hay varias formas de hacer copias de seguridad de un sistema Linux, incluyendo rsync y rsnapshot que discutimos en su momento.


En este artículo se proporciona 6 ejemplos prácticos sobre cómo utilizar el comando dd para realizar copias de seguridad del sistema Linux. dd es una potente utilidad de UNIX, que es utilizado por el makefiles Linux kernel para hacer las imágenes de arranque. También se puede utilizar para copiar datos. Sólo el superusuario puede ejecutar el comando dd.

Advertencia: Cuando utilice el comando dd, si usted no tiene cuidado, y no sabe lo que está haciendo, perderá sus datos! Ejemplo 1. Copia de seguridad de Todo el disco duro. (En otro disco de igual o superior tamaño)

Para respaldar una copia completa de un disco duro a otro disco duro conectado al mismo sistema, ejecute el comando dd, como se muestra a continuación. En este ejemplo, el nombre de dispositivo UNIX del disco duro de origen es /dev/hda, y el nombre del dispositivo del disco duro de destino es /dev/hdb. (Los discos más modernos suelen ser sda y sdb)

# dd if=/dev/sda of=/dev/sdb

"if" representa archivo de entrada (Input File), y "of" representa el archivo de salida (Output File). Así que la copia exacta de /dev/sda estará disponible en /dev/sdb. Si hay algún error, el comando anterior fallará. Si usted usa el parámetro "conv=noerror" continuará copiando pese si hay errores de lectura.

Archivo de entrada y archivo de salida debe ser mencionados con mucho cuidado, si usted menciona dispositivo de origen en el de destino y viceversa, es posible la pérdida de todos sus datos.

En la copia del disco duro a disco duro con el comando dd como se indica a continuación, la opción de sincronización le permite copiar todo sincronizado con I/O.


# dd if=/dev/sda of=/dev/sdb conv=noerror,sync

Ejemplo 2. Crear una imagen de un disco duro

En lugar de tomar una copia de seguridad del disco duro, puede crear un archivo de imagen del disco duro y guardarla en devices. El almacenamiento así tiene muchas ventajas de realizar copias de seguridad de sus datos a una imagen de disco. Este método es más rápido que otros tipos de copias de seguridad, lo que le permite restaurar rápidamente los datos después de una catástrofe inesperada.

 # dd if=/dev/hda of=~/hdadisk.img

Lo anterior crea la imagen de un disco duro /dev/hda.

Ejemplo 3. Restaurar mediante imagen de disco duro

Para restaurar un disco duro con el archivo de imagen de un disco duro a otro, utilice el siguiente ejemplo de comando dd.

# dd if=hdadisk.img of=/dev/hdb

El archivo de imagen hdadisk.img, es la imagen de un /dev/hda, por lo que el comando anterior restaura la imagen de /dev/hda a /dev/hdb.

Ejemplo 4. Creación de una imagen de disquete

Con el comando dd, puede crear una copia de la imagen de disquete (o un lapiz óptico usb) con gran rapidez. En el archivo de entrada, dar la ubicación del dispositivo floppy, y en el archivo de salida, indique el nombre del archivo de imagen de disco, como se muestra a continuación.

# dd if=/dev/fd0 of=myfloppy.img

Ejemplo 5. Copia de seguridad de una partición

Usted puede usar el nombre de dispositivo de una partición en el archivo de entrada y en el de salida cualquiera, especificando la ruta de destino o archivo de imagen, como se muestra en el ejemplo del comando dd abajo.

# dd if=/dev/hda1 of=~/partition1.img
Ejemplo 6. Copia de seguridad de CD-ROM

dd comando le permite crear un archivo ISO a partir de un archivo de origen. Así que podemos insertar el CD e introduzca el comando dd para crear un archivo ISO de un CD de contenido.

# dd if=/dev/cdrom of=tgsservice.iso bs=2048

dd comando lee un bloque de entrada y de proceso, y lo escribe en un archivo de salida. Se puede especificar el tamaño de bloque para la entrada y salida de archivos. En el ejemplo anterior comando dd, el parámetro "B" especifica el tamaño del bloque para el archivo de la entrada y la salida. Así dd 2048bytes utiliza como un tamaño de bloque en el comando anterior.

Nota: Si el CD está montado, antes de crear una imagen ISO con el comando dd, siempre es bueno desmontarlo para evitar cualquier acceso innecesario al CD ROM.​

Ejecutar comando en STEAM

CÓMO CONSEGUIRLOS

  • Ve a Windows y abre Ejecutar o presiona (tecla de Windows + R)
  • En ejecutar escribe: steam://open/consoley presona ENTER
  • Esto te abre la consola de Steam, donde abajo puedes escribir el comando que quieras. (https://programacionapps.blogspot.com/2018/09/licencias-gratis-steam.html)
  • Dirá que está solicitando una licencia, bla, bla ... ahora revisa la página de licencias y te mostrará todas tus novedades gratuitas. Ya las tienes para siempre en tu cuenta de Steam. Si las quieres instalar para jugar también puedes hacerlo ahora.

Si haces más de 50 peticiones en 60 minutos, es posible que obtengas un bloqueo temporal en Steam durante 1 hora, por lo que debes hacer 2 líneas cada 60 minutos como máximo. Recomiendo esperar unos minutos más para estar seguro. El bloqueo sólo significa que no puedes añadir más juegos durante esa hora, no que te bloqueen la cuenta, no puedas jugar ni nada de eso.

Licencias gratis STEAM

LISTADO DE COMANDOS
app_license_request 685310 625430 212070 442120 550470 286080 675810 575720 375230 641780 215280 455020 448930 604500 531640 572520 380600 397900 592890 339600 364470 600750 582500 607200 331360

app_license_request 648430 622470 301520 643980 619310 386360 444930 236110 529840 287920 253710 661960 680310 235400 446540 445720 534500 688650 522230 372000 212740 688240 416450 397060 505700

app_license_request 265630 227940 531800 459820 382850 622650 357480 424280 466660 530330 689580 436520 360730 542560 446270 113400 453480 642390 622060 238260 348250 660880 506540 518580 591960

app_license_request 365300 414530 300080 446150 412310 329110 687280 435440 521800 679990 627530 253510 691730 429790 716690 436180 713650 351790 311730 291410 566410 262410 390540 280790 657050

app_license_request 627690 703671 370070 691540 565050 335820 587650 293260 353130 444200 465520 200210 238960 375950 564710 234330 271920 689090 544730 411480 17740 233570 669580 386180 213450

app_license_request 343730 291480 615050 550650 482920 516510 485610 513000 261980 639650 1280 582890 349620 603140 340810 270370 391780 531960 647530 708680 259080 373330 672650 397550 415860

app_license_request 442080 529110 589870 689830 388490 402840 420790 437160 438140 316390 707340 546390 547180 672730 683670 457550 628530 682970 611120 211500 212160 225840 264380 628440 394230

app_license_request 570 677290 720460 561970 608110 640030 317600 703760 621880 474010 656770 610080 687980 382000 394120 533780 438100 377260 530900 704060 676490 718230 703900 594960 593620

app_license_request 657860 599060 310380 510190 412940 478980 223750 333930 274620 227180 504300 304930 235340 671310 693810 423880 396280 321400 236390 513650 708171 39000 656070 312990 416030

app_license_request 530700 720110 291150 370770 342200 624771 451160 577020 545170 469990 477200 533970 719690 341890 455460 462270 643910 649310 528450 244050 226980 282660 212200 700860 402570

app_license_request 203290 436150 227240 673620 349720 612290 673070 716620 39120 690690 596940 434520 390100 24200 434120 11020 291550 695410 373980 263540 327690 697970 204300 317400 555570

app_license_request 444090 427270 408930 392950 532800 550900 388520 687630 552110 586030 460510 491790 323370 389430 266430 388370 342150 410380 656120 391460 651090 372800 706970 676770 22350

app_license_request 226320 429680 454540 513450 324810 454910 359800 558100 510660 314970 290930 404410 690930 201210 709960 461910 466910 718570 452230 606010 545820 427020 464800 643870 652480

app_license_request 442810 305260 686950 688870 385370 409510 688340 349480 607260 594610 578600 588180 619910 644540 497640 508390 466170 578310 555210 589120 334370 672640 268420 51100 244930

app_license_request 447270 466270 312450 614250 412470 661260 363970 471710 667120 525100 433350 331470 533690 542210 711400 670500 674400 380840 703430 665490 615340 436160 332070 691930 339610

app_license_request 383080 676860 568810 651280 336510 449040 462930 393360 351570 440 512470 612020 339280 563560 565030 369200 713240 382490 214850 636040 562540 504730 404015 455041 506190

app_license_request 534330 551820 551821 619250 449394 664270 435030 542590 708170 415270 354290 451130 351140 639230 528740 588430 606180 555450 609220 687870 611020 645260 237310 713280 355840

app_license_request 652980 261430 546600 258700 215080 224600 304030 304050 407510 232450 612620 706620 378370 109600 673590 644700 589160 265770 293540 592460 703441 512560 365670 686340 571350

app_license_request 645830 338810 709580 402560 541180 314280 216150 668770 362850 416690 557780 530620 17520 436110 579010 351640 467380 528580 544510 374570 591740 290140 9880 1840 17500

app_license_request 616090 632280 369400 17570 351030 660520 703090 431510 317790 604091 526400 253530 317360 434430 689400 215100 353360 537130 417860 384180 659900 654174 9900 696990 701100

app_license_request 346900 250740 306930 376310 444640 332650 637960 646140 687320 560970 317470 268850 596650 587460 624510 631660 655550 389570 273110 344670 372650 381940 392230 396060 397610

app_license_request 404020 405480 409020 410390 413620 420020 422500 426610 428810 431390 436340 436740 436820 446750 446770 448710 448980 450390 451980 452490 452710 453000 453170 453190 455160

app_license_request 455440 456450 456570 456920 457230 457420 457670 458590 458890 459170 460850 461320 462530 462910 464540 464940 466720 466900 468700 469540 469650 469960 470130 471630 474720

app_license_request 477130 477800 478000 482390 483680 485230 490840 491800 493400 495030 495450 495520 496180 496190 497820 498510 498600 499540 500360 500380 500660 501180 501380 501470 503470

app_license_request 503630 504630 506280 507210 510130 511360 512630 512710 513150 513760 515020 516470 517550 519170 523170 524030 525540 526680 526730 529150 529540 529670 531990 534460 536210

app_license_request 537060 538110 538780 538950 539190 540630 542170 542960 543640 543660 544130 544420 544590 547440 547750 549360 549880 549920 550520 550820 551960 552770 552960 553590 554140

app_license_request 557670 559010 559920 561080 561390 563470 564330 566130 566150 568600 568690 569370 571500 572000 572660 574440 574730 574780 576650 576790 576840 578470 579040 579050 579080

app_license_request 580410 580630 582030 583510 584170 584200 585000 585270 585340 588290 589460 590430 590440 592450 592920 593090 593400 594490 595490 598070 600140 602140 603630 604530 605810

app_license_request 605850 607770 607860 608000 608980 611090 612050 612440 612590 612790 613220 613920 614710 615460 615650 616810 617600 619020 619600 622110 622290 622310 622380 623970 624460

app_license_request 624920 625470 627300 627301 630180 630510 630540 630541 630542 630543 630980 633140 633210 633320 634060 635680 635681 635682 635683 635684 635685 635686 635687 635688 635689

app_license_request 635690 635691 636580 636930 638920 639190 639550 639960 640630 642840 643000 644660 645480 647670 648870 650090 651320 653560 657010 662470 662700 665200 667110 668180 668480

app_license_request 668530 669440 670600 670601 670602 670603 670604 670605 671340 671341 671342 671380 671381 671382 676470 677380 684380 356670 506140 509420 260430 697040 449130 17510 365270

app_license_request 385890 511800 682710 581130 672000 248570 614111 536930 393790 465710 497570 653220 646171 646170 678350 17700 283060 362060 375600 665040 8500 416040 467360 687590 600120

app_license_request 298240 542480 38830 206210 338540 434510 562590 616220 703590 693623 689430 702800 458960 547680 706150 345390 590280 673900 676070 513210 206500 404790 389300 534820 342480

app_license_request 449050 343630 35800 473850 319630 540160 648650 352700 317110 335240 372540 468560 488440 520860 537180 568770 671700 700900 550740 245550 290730 298260 407120 509800 17080

app_license_request 497860 390160 361630 390670 409690 464700 465440 681500 637850 212800 293500 381990 412140 698470 384030 415840 531190 700380 458970 298160 355180 501050 411192 411186 411185

app_license_request 523488 702695 685200 214420 412230 543650 659000 454600 684250 319150 336520 387970 495910 651470 438720 685830 286100 302670 398840 529780 628870 702690 702691 702692 702693

app_license_request 702694 702696 670640 476460 419070 463794 626680 17580 510790 552140 302590 686870 676800 335430 454070 553730 620530 417920 17530 113420 235780 239660 313240 354900 409160

app_license_request 461560 658510 691961 643270 432290 397040 337410 11610 645540 631130 295550 326960 475530 529720 212500 448570 640410 568110 636240 619582 688810 400040 99900 385770 397100

app_license_request 464780 490230 549090 663170 257730 682310 682300 391820 416130 562010 603880 351270 655170 377330 423890 429180 302830 342370 385260 641880 642270 652840 691950 675630 690030

app_license_request 286940 429940 691960 602090 554340 433800 545110 338180 689890 623840 692140 201230 542310 610940 686140 592800 687820 619801 368950 553030 224260 244630 310370 519140 532840

app_license_request 557400 372190 230410 354640 409670 421670 443580 573770 652150 306830 321840 356130 412400 647000 574680 282880 346120 365720 384150 547870 385530 320590 348860 367120 491130

app_license_request 581650 692330 373680 207230 353220 684780 373720 223710 654680 614620 567970 102700 250420 442710 449140 346330 612610 313730 331120 346250 387860 319570 598530 654171 654170

app_license_request 437900 492690 104700 213650 673690 685070 545650 459160 338000 684110 355000 587290 246820 684610 238070 337950 676890 593270 590770 631450 684730 680790 300040 628610 461680

app_license_request 437720 678990 240320 665740 266450 364960 541190 547690 598680 534950 660330 668140 677370 683060 468530 524970 407060 650290 650291 682840 682850 682830 227700 218230 671950

app_license_request 678710 370190 489560 510050 493370 354200 646820 669940 654340 679950 521470 625140 656620 414730 467990 605610 630 17550 17730 92500 229950 231390 261820 301070 463020

app_license_request 521200 522660 557880 581120 509880 503110 614100 647430 678550 383860 531540 386640 459510 646960 667650 667710 330760 431540 513440 655160 660770 666200 670030 626650 430890

app_license_request 539260 438040 655330 609940 432310 675150 675151 675152 495590 355500 673440 670980 449000 376570 596710 657410 674460 481890 641860 461820 672060 553670 314000 395520 271290

app_license_request 519569 519570 519571 519572 519573 519574 519575 519576 519577 519578 519563 519564 519565 519566 519567 519568 381640 377430 393530 463390 525780 560260 340350 391270 357500

app_license_request 206480 399520 509190 266150 321480 663420 614610 356330 529770 461180 440090 667250 565730 523680 526180 585030 669300 665990 509560 251450 404480 407900 567740 598390 259020

app_license_request 366440 453890 564180 598710 217750 523190 316010 661950 41010 471450 35420 625080 544620 530670 530671 377150 627010 627011 627012 627013 633251 650030 650031 660740 642590

app_license_request 348760 348700 519562 519561 519560 539640 580210 642250 649920 420690 653200 578290 213550 438920 397680 600410 590450 638800 645840 376140 404281 536950 645960 592860 511890

app_license_request 581951 642640 640230 590910 392450 614870 642540 635530 366530 389509 639010 610040 595750 533200 639870 542974 475230 618730 639030 610051 592850 635240 635241 635242 635243

app_license_request 587840 452780 634170 305280 470040 505430 537540 593880 627470 542940 472680 218330 486110 611210 621960 556750 323910 610050 587660 631610 47410 633310 624390 612870 486830

app_license_request 604950 628700 391210 455760 633410 496580 394740 614200 592840 456410 592780 630780 631320 329020 509530 396030 593370 513560 348350 411820 510630 604190 616440 625660 626900

app_license_request 608590 487520 386600 456200 563850 486490 592830 518213 518214 518215 595350 585640 583740 619790 483280 620820 587980 624770 520180 578000 399660 602750 439940 518212 587740

app_license_request 532770 554640 567090 574740 582830 212180 622500 547010 408030 317780 618280 586870 604930 529190 491380 413720 587570 594300 594310 397360 364110 209710 442110 36620 583680

app_license_request 510730 582570 582575 582574 582572 582573 582571 529870 579537 613680 450220 584190 601190 585990 606970 595980 108210 582100 545570 579536 589700 583635 569682 569680 569681

app_license_request 569683 569684 476052 476051 480560 542900 263500 610820 588301 25600 610100 608650 602310 109400 579371 583634 579535 578240 493480 588010 480580 13140 496900 457330 342980

app_license_request 580440 580430 516400 434180 386310 542870 577390 579534 583633 579541 380360 463792 200110 444620 517910 544840 547820 573540 573546 568380 551810 514590 600560 590540 506803

app_license_request 506802 506801 319730 542850 579540 579533 583632 501280 590480 598290 537230 299420 583631 579539 579532 571460 312280 205890 596160 565250 569710 401800 596470 572600 477240

app_license_request 549610 549620 587500 579531 583630 289780 579538 246280 543200 556800 573570 573580 553440 588810 505100 571730 343740 565240 277950 589620 502550 523910 585281 585283 585282

app_license_request 562840 565400 574990 569400 501170 444250 370590 565230 577660 585880 540810 491460 491480 491500 491940 491960 491980 492020 492030 492040 492050 492060 371310 201070 565220

app_license_request 227220 584770 524900 584970 539650 505750 402450 524240 584620 469050 578410 565210 585130 585280 212240 555960 407210 415720 495750 582090 463250 563790 397990 465090 571810

app_license_request 582250 442290 534190 205710 576350 410810 517680 564010 576210 558680 380140 531200 541430 540170 486420 522280 356310 520910 378180 547540 431340 448212 431500 466260 366160

app_license_request 549770 569820 557810 569244 573920 566390 573140 458760 556720 564030 446990 567900 571750 566910 476570 556880 573880 573850 571440 562060 564400 431780 445780 325983 464050

app_license_request 570920 379870 567050 294160 257400 561816 561811 505650 418140 559990 569410 566720 538351 560790 560580 374670 563720 547560 555420 407250 566340 538880 542330 563400 548700

app_license_request 563430 444360 539370 561200 389530 518210 518211 541630 557890 485650 550768 548290 558660 546890 489000 549630 503160 299360 348920 348610 560240 558880 497090 496100 393480

app_license_request 406950 402290 406960 407080 555865 555861 466960 435340 254300 403690 546880 420240 547260 553130 239220 522090 273350 488160 347370 347360 495400 540380 218450 550760 550761

app_license_request 550762 550763 550764 550766 550767 550770 550769 550771 550773 550772 550774 550775 550776 550777 550778 550779 550780 550781 550782 550783 550784 11130 469930 552090 314010

app_license_request 552680 219700 499950 402890 534610 534614 534615 534616 534617 534618 534619 534620 534621 534622 534623 534624 534625 534626 534611 534627 534612 534628 534613 534630 534631

app_license_request 534632 534633 534634 550765 534635 534636 534629 393970 521570 349210 208090 218130 488910 404580 440980 452640 472060 295710 463060 493240 396420 462970 219340 351020 428870

app_license_request 317410 222520 209870 272350 451960 549640 494110 551030 424780 523070 527440 547660 518780 534340 448390 494220 518810 523334 314420 535440 544520 539310 542780 543620 523335

app_license_request 538360 538352 538350 351630 520190 331580 523330 523331 523332 523333 523336 523337 523338 523339 540520 530420 526430 403040 542120 242740 336040 542600 6370 13120 36630

app_license_request 90530 105430 113900 203850 212220 213390 234310 240380 244590 251670 269390 269910 329280 330000 330710 334030 345520 348840 351800 358390 368980 377590 385880 393930 418280

app_license_request 471770 479030 535420 396960 539030 539100 420828 372920 496330 532310 538400 527680 406100 527640 527641 527642 527643 527644 527645 527646 527650 527651 527652 537420 537421

app_license_request 537422 537590 514390 253490 525370 444560 533870 537410 521121 521962 516770 537190 534590 486160 497940 534860 534850 426970 345040 526470 476561 534341 530380 529030 526122

app_license_request 526562 526572 530180 362400 532000 60600 110500 513200 530661 512290 492010 491990 491970 492000 441520 530720 368290 518370 523329 523328 523327 523326 523325 523324 523323

app_license_request 523322 523321 523320 365070 525180 525186 525185 525183 524630 512480 495470 362200 362210 362220 362230 362240 362250 362260 362270 362180 362190 508430 525960 293200 394140

app_license_request 416900 222500 413690 517320 520030 523690 229100 422630 458670 515300 523920 451230 523487 523484 523483 523482 523481 523489 523485 523486 523490 523480 479130 344190 519910

app_license_request 504270 492800 473660 487130 517050 351410 513040 503990 515990 447260 507290 510750 494300 508510 470080 447660 510670 509860 410560 506920 510310 498060 288460 508150 377560

app_license_request 506600 497810 458280 458320 458270 458260 458300 458310 458250 413859 413857 413858 413852 413851 413855 413853 413854 413856 447570 502490 503890 462972 438831 498811 435963

app_license_request 366960 449780 454640 463740 497811 497812 497813 500840 498810 351840 501250 493810 493630 493640 485000 487490 435961 394380 369030 379200 315880 411194 411182 411184 420090

app_license_request 411183 411187 411190 411188 411189 411191 411193 419910 411181 488140 488130 327360 495460 361780 361770 361760 361750 361740 361730 361720 361710 478960 494710 420880 354550

app_license_request 354540 354530 354520 493850 354510 403520 326740 407473 407472 485800 489920 489330 488190 41300 201190 218470 221360 223390 223630 230310 457390 327640 485960 435770 438680

app_license_request 488700 218170 486210 486520 485760 434630 406910 420825 420824 381570 435960 434633 434632 434631 474030 484340 449470 347680 451330 434480 448310 442220 466380 449020 273550

app_license_request 461970 413810 373700 461750 469520 429670 299910 274160 445130 428300 465730 466390 412630 464810 348500 336390 350470 463490 464580 462351 459110 458560 461060 445230 348110

app_license_request 455330 213470 413170 106010 109410 212370 212390 215120 218310 221080 221200 221790 224320 231060 238110 238590 241640 241660 247830 257710 264120 266030 266070 290830 307290

app_license_request 329790 335330 336670 342570 345650 350660 356370 360480 378480 398450 407090 416670 452220 420822 437400 435060 444040 340460 384980 440740 405980 435177 445080 219870 412990

app_license_request 439390 431980 211380 221120 430330 441040 438600 415750 441240 417890 343750 343720 400030 350990 435450 393410 429300 321280 324830 324850 341190 398310 430110 348320 348010

app_license_request 347910 347920 347780 349800 349560 350720 350400 350230 372820 420340 33310 425910 425930 425750 425920 425940 415430 421920 384560 421780 410140 213570 218210 257380 350020

app_license_request 381560 394170 419660 280620 400120 394720 388780 387450 380760 378300 375220 373100 370880 370580 366800 365050 364450 362970 360870 359080 358640 356520 354870 352160 351540

app_license_request 350870 350730 343330 340540 335981 335150 322420 317760 304890 300970 297210 250600 242720 224280 221220 215870 213530 213590 213490 213410 213430 31740 99910 95700 47770

app_license_request 48900 1230 3483 380890 351980 414480 316400 404800 414520 408430