Crear logs de un proceso [Solucionado]

Hola a todos, estos dias estoy probando con CCcam, es un server para gestionar ECM y EMM (para television de pago).

El tema es que tengo el binario en /usr/local/bin/CCcam.x86 y si lo ejecuto tengo este output:

# /usr/local/bin/CCcam.x86 -d
16:07:59.236 CCcam: ======================================================================
16:07:59.237 CCcam: starting CCcam 2.1.4 compiled on Jan 30 2010@17:00:48
16:07:59.237 CCcam: ======================================================================
16:07:59.237 CCcam: online using nodeId xxxxxxxxxxxxxxxxxxx
16:07:59.238 CCcam: read config: cannot open /var/tuxbox/config/newcamd.conf or not found
16:07:59.239 CCcam: create 1 cam device(s)
16:07:59.260 CCcam: readKeyfile: cannot open /var/keys/SoftCam.Key or not found
16:07:59.260 CCcam: readKeyfile: cannot open /var/keys/AutoRoll.Key or not found
16:07:59.260 CCcam: static cw not found or bad
16:07:59.260 CCcam: parsed 0 entries from /var/etc/CCcam.prio
16:07:59.266 CCcam: added 1327 provider names from /var/etc/CCcam.providers
16:07:59.406 CCcam: added 10081 channel names from /var/etc/CCcam.channelinfo
16:07:59.406 CCcam: server started on port 15000
16:07:59.409 CCcam: newcamd server 127.0.0.1:18000 user: userx
16:07:59.415 CCcam: newcamd caid 0100 providers 1 userid: 0
16:07:59.415 CCcam: newcamd card serial:    00000000
16:07:59.415 CCcam: newcamd prov 00 004106  00000000
16:08:02.152 CCcam: login from xxxx.xx.xx
16:08:02.321 CCcam: login from xx.xx.xx.xx
16:08:02.438 CCcam: user userx login attempt from xx.xx.xx.xx
16:08:02.581 CCcam: user userx login attempt from xx.xx.xx.xx
16:08:02.582 CCcam: client userx@xxxxxxxxxxxxxxxx, running CCcam 2.1.4
16:08:02.714 CCcam: client userx@xxxxxxxxxxxxxxxx, running CCcam 2.1.2
...

Lo ejecuto con el parametro "-d" para que se ejecute en foreground:

# /usr/local/bin/CCcam.x86 -h
usage: CCcam [-d] [-C <configfile>]
-d               run in the foreground (implies -v and -q)
-v               be verbose
-q               don't use syslog (use on old systems)
-C <configfile>  use <configfile> instead of default (/var/etc/CCcam.cfg)
-f               filter on specific demux data (saves some CPU,
                 but some platforms might not handle this very well)
-n               show network packets
-s               disable server
-t               show timing
-l               disable self-learning capabilities

Lo que me interesa es que con la salida crear un log en /var/log, si ejecuto de esta manera no pasa nada al fichero log:

# /usr/local/bin/CCcam.x86 -d > /var/log/CCcam.log

El log esta vacio:

# cat /var/log/CCcam.log

No me explico que puede pasar, he cambiado los permisos, borrar el log, volver a crearlo, pero nada.

¿Alguien me puede ayudar con esto?

Muchas gracias y saludos.

Intentalo agregando a ver que pasa

# /usr/local/bin/CCcam.x86 -d >> /var/log/CCcam.log

Edito :¿Por que lo ejecutas como root?

probablemente lo consigas si rediriges stdin y stder al archivo log. Lee sobre redirección en Bash

/usr/local/bin/CCcam.x86 2> /var/log/CCcam.log

Has probado a hacerlo así?

nohup /usr/local/bin/CCcam.x86 > /var/log/CCcam.log &

Un saludo ;-)

Hola, gracias por las respuestas, he probado todas las opciones, pero nada.

Para redirigir la salida stderr y stdout a un fichero he probado con esto:

/usr/local/bin/CCcam.x86 -d &> /var/log/CCcam.log

Pero nada, en /var/log/CCcam.log no aparece nada.

En cuanto a ejecutar como "root", lo hago porque en los tutoriales que he leido pone eso, pero me imagino que esto se podra cambiar. Primero quiero solucionar lo del log, que me tiene un poco mosca.

Lo de ">" y ">>" creo que es para borrar lo que habien en el fichero o añadir al final, ¿no?

Seguire con ello, gracias y saludos.

Por si alguien quiere probar os pongo el binario: http://dl.dropbox.com/u/1541853/CCcam.x86

Una pregunta, si usas -d para que se ejecute en segundo plano... ¿por qué terminas el comando con &?
Tal vez probando con otras opciones (como ...-v & >...).

Jlazkano escribió:

Lo de ">" y ">>" creo que es para borrar lo que habien en el fichero o añadir al final, ¿no?

la primer opción ,redirije y sobrescribe lo que haya en el archivo ,la segunda opción agrega a continuación .
Se me ocurre ( por si las moscas ) que intentes escribirlo en otro directorio por ejemplo ~/log , a ver que ocurre. y/o tal cual dice blackhalo ,con otras opciones que no sea -d
Edito :¿Intentaste algo asi como ,?

# /usr/local/bin/aplicación  -v >  /home/usuario/log &

A ver que pasa ,y te fijas si en tu /home , te ha creado el archivo

Estoy flipando, no se porque no redirige al fichero log. He probado todo lo que me habeis dicho y mas cosas. En otros foros he encontrado esto:

#!/bin/sh

process=`ps auxwww | grep CCcam.x86 | grep -v grep | awk '{print $1}'`
if [ -z "$process" ]; then
echo "Couldn't find CCcam.x86 running. Restarting server-binary" >> /var/log/cccam.check
nohup /var/bin/CCcam.x86 -d >> /var/log/CCcam.log &
else
echo "CCcam.x86 is still OK!" >> /var/log/cccam.check
fi

Utiliza el comando "nohup", no he entendido su funcion:

man escribió:

nohup - run a command immune to hangups, with output to a non-tty

He probado el script pero tampoco me funciona.

¿Se puede saber que "fd" abre cada proceso? Es lo malo de los binarios, que no tienes ni idea de lo que hacen...

Seguire con ello. Gracias y saludos.

Ya esta!!! Lo he hecho de otra forma, asi me ha servido para aprender sobre syslog.

Resolucion:

En la configuracion de CCcam se activa la opcion "DEBUG".

Se ejecuta el binario de esta forma:

/usr/local/bin/CCcam.x86 -v &

Observamos que los logs se guardan en syslog:

cat /var/log/syslog

Creamos los filtros para syslog:

nano /etc/rsyslog.conf
#### Filtros para CCcam
if $msg contains 'bad command' then /var/log/cccam-bad.command.log
if $msg contains 'illegal user' then /var/log/cccam-illegal.log

Y se reinicia syslog:

/etc/init.d/rsyslog restart

Y listo! Ya tenemos los logs que me interesan en /var/log/:

# cat /var/log/cccam-bad.command.log
May 11 11:12:42 server CCcam: kick xxx.xxx.xxx.xxx(userx), bad command
May 11 11:53:00 server CCcam: kick xx.xx.xx.xx(), bad command
May 11 11:58:17 server CCcam: kick xx.xx.xx.xx(), bad command
...
# cat /var/log/cccam-illegal.log
May 11 11:12:42 server CCcam: illegal user userx from xxx.xxx.xxx.xxx
May 11 11:12:52 server CCcam: illegal user userx from xxx.xxx.xxx.xxx
...

Ahora solo me falta activar el fail2ban para ese servicio, que anda mucho "piratilla" suelto!

Gracias a todos por vuestra ayuda, no es la forma que pensaba al principio, pero creo que es bastante eficiente y ademas he aprendido como configurar el syslog.

Saludos y hasta pronto.

fail2ban? Si esto es solo para tu casa!! ;)

gokula escribió:

fail2ban? Si esto es solo para tu casa!! ;)

No solo es para mi casa, cuando salgo fuera puedo ver GolTV en el portatil con un tunner TDT.

Saludos.