Sunday, August 10, 2008

4 días para vacaciones...

Supervisión de procesos en UNIX

No sé si existe algo parecido para servidores windows, si lo hay, irremediablemente conllevará su paso por caja, aunque este no es el tema de hoy.

Me imagino que muchos de vosotros habréis sufrido la caída de servicios o procesos en vuestras máquinas Unix, ya sea en el trabajo o en vuestra casa, y hasta pasado un buen tiempo no os habréis dado cuenta, con lo que eso supone: usuarios enfadados, la peli que te estabas copiando por rsync parada, tu sistema de seguridad caído, tu mythtv parado obligándote a levantarte del sofá, un dns que administras parado, tu web caída....
Pues bien, daemontools se encarga de monitorizar los procesos que le indiques y los levantará automáticamente si estos han caído por algún motivo.

Si quieres aumentar la productividad de tus aplicaciones, es recomendable que utilices daemontools , este paquete, que no he conseguido encontrar en los repositorios de Ubuntu es tu salvación.

A continuación expongo los pasos a seguir para hacerlo funcionar en Ubuntu Hardy 8.04, aunque también puedes instalarlo en tu distribución preferida. Yo por ahora sólo lo he probado en Gentoo y Ubuntu.

apt-get install build-essential
mkdir -p /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
gunzip daemontools-0.76.tar
tar -xpf daemontools-0.76.tar
rm daemontools-0.76.tar
cd admin/daemontools-0.76
touch /etc/inittab
package/install

Aquí seguramente te dará un error del tipo "/lib/libc.so.6: could not read symbols: Bad value"
para solucionarlo y poder compilar sin problemas sólo tienes que editar el fichero "error.h" y eliminar la línea "extern int errno;" sustituyéndola por "#include <errno.h>" Después de ésto ya podrás ejecutar sin errores package/install. Una vez instalado dentro del directorio /service/ deberás crear un directorio por cada proceso que necesites supervisar y dentro del mismo crear un fichero ./run donde indicar el proceso a ejecutar. Puedes incluir también variables de entorno creando un subdirectorio ./env y también generar logs.

Para ver todas las posibilidades de este paquete lo mejor es que vayas a tu frigorífico cojas una cerveza bien fría y te des un paseo por la web del autor.
http://cr.yp.to/daemontools.html

Sunday, June 29, 2008

Capturar vídeo analógico en tu linux box

Para aquellos que quieran recuperar esos recuerdos de los 80 y 90 abandonados en cámaras analógicas, que sepan que están de enhorabuena y de manera muy sencilla conectando tu fuente analógica mediante cable s-video - rca y mediante el siguiente comando:

PAL HIGH ('DVD' QUALITY) RES CAPTURE

mencoder -tv norm=PAL:driver=v4l2:width=720:height=576:input=1:fps=25 tv:// -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf pp=lb/ha/va/dr,hqdn3d,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1500:vrc_maxrate=8000:vbitrate=7000:keyint=15:acodec=mp2:abitrate=192:aspect=4/3 -o capture.mpg


información más detallada en Converting VHS to DVD

The Youtube Screening Room



http://es.youtube.com/ytscreeningroom

Wednesday, May 21, 2008

Mejorando el sistema de videovigilancia: vídeo en tu móvil (2)

Pasadas unas semanas desde que publiqué el sistema de vigalancia casero, me apetecía mejorarlo un poco, quería que además de que guardara constancia del ladrón, pudiera acceder a sus imágenes y vídeos allá donde estuviera. Sin necesidad de tener el portátil delante y con la única condición de tener una conexión a Internet, ya fuera GPRS, UMTS o WIFI para acceder desde mi móvil Nokia N80.

Así que me puse manos a la obra, tomé alguna idea de otros sistemas, y modifiqué partes de código según mis necesidades.
Así el nuevo sistema, ya no envía por email las fotos y vídeos del intruso, sino que las sube a mi servidor ftp y desde allí puedo acceder a ellas, desde una carpeta protegida por contraseña en el servidor web del mismo servidor.

¿Pero cómo poder ver los vídeos desde el móvil? el N80 como otros muchos de Nokia sólo nos permite determinados formatos y a una resolución determinada. También hubiera sido posible la retransmisión en directo desde mi casa al móvil mediante streaming rtsp y el visor incorporado en el N80, leí un poco de información relativo al streaming rtsp para N80 y casi todo eran problemas, además de que para cuando yo me conectara a ver lo que ocurriera en casa puede que el intruso ya no estuviera en el campo de visión o bien hubiera desconectado mis ordenadores.
Por esta razón lo que hago es subir inmediatamente las imágenes en jpg por una parte y por otra los vídeos del intruso en formato 3gp, mediante conversión gracias a ffmpeg.

Así en el momento en que el servidor de seguridad motion escribe una imagen en el disco duro, ésta es subida al ftp y cuando motion cierra un vídeo, éste vídeo se codifica en 3gp con resolución 352x288 y también se sube al ftp. Finalmente las imágenes y vídeos subidos se almacenan en un directorio a parte.

A continuación incluyo el código de mi archivo de configuración de motion(parte de el) /etc/motion.conf, y el script de envió de vídeo al servidor (el de imágenes es parecido).


# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap
on_event_start java /home/daniel/java/gdata/java/src/EnviaSMS usuario password "http://miservidor.es/micarpetasegura/"

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
on_picture_save /home/daniel/motion/base/usr/bin/upload-pictures.sh %f

# Command to be executed when a motion frame is detected (default: none)
; on_motion_detected value

# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_start value

# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# To give the filename as an argument to a command append it with %f
on_movie_end /home/daniel/motion/base/usr/bin/upload-videos.sh %f


upload-videos.sh


#!/bin/sh
FILE=`echo $1 | awk '{print substr($1,19,17)}'`
ffmpeg -i "/home/daniel/motion/$FILE.avi" -ar 128000 -ac 1 -acodec aac -vcodec mpeg4 -s 352x288 -r 24 -b 350 -ab 32 "/home/dani/motion/$FILE.3gp"
#upload ftp
HOST='ftp.tuservidor.es'
USER='*********'
PASSWD='***********'
echo $1 | awk '{print substr($1,19,23)}'
echo "el nombre del file es: "
echo $FILE
cd /home/daniel/motion/
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /www/tucarpetasegura/videos
put $FILE.3gp
quit
END_SCRIPT

#move to uploaded
mv /home/dani/motion/$FILE.avi /home/daniel/motion/uploaded/videos
mv /home/dani/motion/$FILE.3gp /home/daniel/motion/uploaded/videos
echo "$FILE moved to the ftp server"
exit 0


Nótese que el texto del mensaje es la dirección URL donde se encuentran nuestros vídeos. Por ejemplo http://miservidor.es/directorioconpass/videos. Así, pasado un minuto y algo más desde que motion detecta al malo, podremos verlo en nuestro móvil y avisar con certeza a la policía.

Enlaces:
Sistema de videovigilancia 1
Sistema de seguridad casero
Usando el API de Google Calendar: Alarmas por SMS

Monday, May 19, 2008

Como hacer reserva (cutre) de DHCP en router Comtrend CT-5361

Me río yo de los routers que ofrece Telefónica con sus líneas adsl, concretamente del que pongo en el título. Estaba intentando hacer una reserva de dhcp por dirección MAC, algo bastante normalito para un demonio de dhcp y me doy cuenta de que no es posible desde la pagina web de configuración.

Pensé, bueno igual tiene acceso ssh y puedo trastear algo, efectivamente tiene acceso ssh pero las opciones disponibles son las mismas que desde la web, vamos que se lo podían haber ahorrado. ¿Por qué esta manía de capar los firmwares? parece que inciten a la gente a flashearlos...

En fin si a alguien se le ocurre hacer lo más parecido a una reserva debe cambiar el "lease time" del servidor DHCP, yo he puesto concretamente a 5 años de "lease time", 43824 horas que con la ups y si no me harto antes del router guardará su dirección IP, eso si no salta alguna sorpresa más de este router.

A menuda cutrez nos obliga Comtrend y Telefonica, si alguien quiere revisar su manual, sólo existe un manual de usuario , no esperes comandos en shell eso es para colgados.

Saturday, May 17, 2008

Redes wireless mesh con la Fonera para fines sociales

Hace poco se me ocurrió la idea de montar una red wireless de tipo mallado (redes mesh) de bajo coste y con software libre. No había tenido oportunidad de mirar el tema hasta hace unos días.

El hardware con el que contaba era limitado, una fonera, ya que el router Comtrend que viene con mi conexión Adsl no tenía mucha pinta de ser flasheable con un nuevo firmware. Así empecé a buscar información sobre redes malladas y dí con el proyecto de Antonio Anselmi , open-mesh.
Su firmware open source está orientado a hardware de bajo coste, tipo los routers de Fon, y provee de toda la funcionalidad de las redes mesh.

Como además creo que para promover el software libre y las obras sociales son necesarios recursos, busqué algún software para montar un hotspot sobre la red, pensaba que aquí debería dedicar más tiempo en programación, pero encontré wifi-cpa , un portal cautivo "llave en mano" que ofrece servidor radius y control de pagos, con una cuenta gratuita de hosting para un sólo punto de acceso, compatible con redes mesh, con usuarios ilimitados, y donando el 100% de las ganancias al mantenedor de la red.

Así que dicho y hecho, cogí mi fonera flaseada previamente con dd-wrt (ya pasé aquello de activar redboot y acceso ssh hace tiempo) le conecté un cable ethernet desde mi pc y flashee el firmware open-mesh adaptado a foneras 2100.

Una vez ya tienes la fonera con el nuevo firmware sólo tienes que conectarla a tu router por cable ethernet, desconectar la alimentación de la fonera y conectarla de nuevo para que tomé su ip por dhcp del router. Luego desde la pagina de configuración de tu router principal miras la tabla dhcp y observas la dirección mac que tiene la fonera, la apuntas, y te vas al "dashboard" de openmesh.com y le das a "add network" rellenas todos los datos y en media hora tu fonera actualizará su firmware si es necesario y podrás observar las características de su conexión desde el panel de control.

Para añadir el hotspot wifi-cpa, deberás indicar en el dashboard de openmesh que quieres utilizar firmware de test desde Edit network y show advanced options. Así pasados unos 15 minutos tu fonera actualizará su firmware y ya será compatible con wifi-cpa hostspot, sólo tendrás que crear una nueva cuenta en wifi-cpa y registrar tu punto de acceso.

Así y después de todo este proceso ha nacido Atocha Wifi un punto de acceso de bajo coste el cual destinará todas sus ganancias a obras sociales, de caridad, comunidades o software libre. Si te interesa colaborar con el proyecto sólo tienes que ponerte en contacto conmigo.

El punto de acceso es ampliable gracias a la funcionalidad mesh tipo RO.B.IN:

ROBIN (ROuting Batman Inside) is an Open Source mesh network project, deployed on top of OpenWRT kamikaze, running on any Atheros AP51 routers such as Meraki Mini or La Fonera and using the BATMAN routing algorithm.
ROBIN spreads a wired internet connection such as a DSL throughout an apartment complex, neighborhood, village or school, and work on a variety of commonly available, low-cost hardware.


AVISO: el firmware de test de open-mesh, como su nombre indica es sólo de test, no se te ocurra utilizar este firmware para una red en producción. Utiliza el firmware beta.

Tuesday, April 29, 2008

Como configurar una Hauppauge WinTV-HVR-4000 en Ubuntu Hardy 8.04

[Actualizado 21/11/2008]
El wiki de linuxtv.org para la HVR 4000 ha sido actualizado, y para hacer funcionar la tarjeta viene muy bien sin tener que parchear el driver de v4l-dvb con "patch". Funciona tanto para TDT como para Satélite, ojo la orientación de las antenas es importante, así que asegúrate que tus antenas se orientan a la estación base o satélite correspondiente :-)

Pruébalo antes de seguir este tutorial, si no te funcionara, que seguro que sí, sigue este método. En los comentarios de la entrada se encuentra un backup del patch, por si no funciona el wget.
Si quieres hacer funcionar el mando con kaffeine, mira la entrada que he escrito al respecto.

Hace ya algún tiempo que se me quedó clavada una espina al no poder hacer funcionar "completamente" sobre software libre mi tarjeta de televisión, concretamente el modelo que cito en el título.

Esta tarjeta, es una sintonizadora híbrida de Alta Definición con 5 formatos de TV: Televisión Satélite Alta Definición, TDT Alta Definición, TDT, Televisión Digital Satélite y TV Analógica, también permite la sintonización de canales de radio analógicos y digitales. Vamos un todo en uno cuyo único inconveniente es que sólo tiene un sintonizador, con lo que sólo puedes sintonizar y grabar un mismo canal, no puedes ver por ejemplo un canal en tdt y grabar otro en satélite.

El caso es que su desarrollo en linux está nunca mejor dicho en desarrollo y los drivers existentes son muy experimentales, aunque siguiendo los pasos correctos podrás hacerla funcionar en linux.
Partimos de una instalación limpia de el nuevo y flamante Ubuntu Hardy 8.04.



sudo apt-get install mercurial patch

Instalación del Firmware:
*************************
1) Primero guardamos el archivo : "wget ftp://167.206.143.11/outgoing/Oxford/88x_2_119_25023_WHQL.zip"

2) Descomprimimos lo necesario : "unzip -jo 88x_2_119_25023_WHQL.zip Driver88/hcw88bda.sys"

3) Ponemos el firmware en su sitio : "dd if=hcw88bda.sys of=/lib/firmware/tukernel/dvb-fe-cx24116.fw skip=81768 bs=1 count=32522"

Instalación del Driver:
***********************
En este caso yo he utilizado los de tipo multifrontend, que son los que nos permitiran seleccionar canales tanto de tdt como de satélite.

#puede que los modulos cx88 que vienen por defecto en ubuntu sirvan para otro modelo de tarjeta, ahora, lo que sé seguro es que para la hvr4000 no funcionan. Por eso borramos a continuación.

sudo rm -r /lib/modules/tukernel/ubuntu/media/cx88

#No todas las versiones de los drivers v4l-dvb funcionan a la hora de compilarlos para esta tarjeta, la versión que si funciona en Ubuntu Hardy 8.04 es la siguiente:
cd /usr/src/
hg clone -r 127f67dea087 http://linuxtv.org/hg/v4l-dvb

# nos bajamos el ultimo parche estable para el driver

wget http://dev.kewl.org/hauppauge/mfe-7285.diff

#aplicamos el parche
patch -d v4l-dvb -p1 <>

He probado con Kaffeine y funciona perfectamente tanto en tdt como en satélite, lastima que Hispasat no emita ningún canal abierto en HD. Todo será cuestión de buscar otro satélite ;-)

Actualización:

1.- Los soft links que creamos en el paso final, desaparecerán si reiniciamos, así que lo mejor es crearlos cuando nuestro linux se carga, para ello nk82 explica en los comentarios cómo crear un script de inicio en /etc/init.d/

2.- Si decides instalar Mythtv y añades todas las sintonizadoras de la tarjeta (tv analogica, tdt y satélite) cuando ubuntu carga el mythbackend dedsde /etc/init.d/ produce que nuestro kernel de errores con el firmware, puede que mythtv esté intentando acceder al firmware antes de que se haya cargado correctamente, no estoy seguro. El error es del estilo " kernel: [ 5001.194966] cx24116_readreg: reg=0x9d (error=-121)". Para pasarlo por alto lo que he hecho yo de primeras ha sido un sudo update-rc.d -f /etc/init.d/mythtv-backend remove , así no se cargará al inicio. Deberemos ejecutarlo manualmente.

3. Debido a las incompatibilidades de este driver con las webcam usb, de primeras no podrás hacer funcionar tu webcam y la tarjeta al mismo tiempo. Hace algún tiempo públique esta incompatibilidad en la lista de distribución de linuxtv-dvb y hasta la fecha nadie ha contestado. Parece que hay gente que lo ha conseguido, pero ha tenido que compilar de nuevo el kernel y hacer un make-kernel links, si quieres más información lee la información que envié a la lista de distribución de linux-tv.
También gracias a nk82 que me dió la idea, puedes salvar este pequeño inconveniente si utilizas la entrada analógica de la propia tarjeta!!, así deberás utilizar el cable conversor de s-video a RCA que viene con la propia tarjeta, no utilices otro porque puede que no te funcione y te vuelvas loco pensando cual es el problema. Este conector de s-video tiene 7 pines y captura en color, con uno de 4 pines conseguirás capturar en blanco y negro.
Busca alguna cámara que tenga salida de rca de vídeo y cuando configures tu programa con webcam configúralo con la entrada Composite, si no te funciona prueba con s-video.


Agradecimientos a:
Ian Bonham, Hagen Schöbel, nk82 y demás colaboraciones de la lista de distribución linux-dvb at linuxtv.
También a la documentación existente en el wiki de linuxtv.org
y a lo que fue mis inicios y peleas con esta tarjeta en el post de Vicente Navarro sobre la hvr-3000

Tuesday, April 22, 2008

Nuevos capítulos de Redes


y como ya no tenemos stage 6 y estos programas requieren un poquito de calidad, que mejor manera de compartir aquello que nos es imposible ver los Lunes en su madrugrada.

Torrent - Redes nº 449 - "Toda vivencia implica un cambio en el cableado de nuestro cerebro"

http://torrents.thepiratebay.org/4151605/Redes-449-Xvid_-_Toda_vivencia_implica_un_cambio_en_el_cableado_.4151605.TPB.torrent

Monday, April 07, 2008