Codigo base:
- #!/bin/sh
- #El parámetro $1 contiene la acción a realizar (start, stop, etc)
- . /lib/lsb/init-functions
- case $1 in
- start)
- #Instrucciones para iniciar el script
- break;;
- stop)
- #Instrucciones para parar el script
- break;;
- restart)
- #Instrucciones para reiniciar el script
- break;;
- *)
- #Instrucciones por defecto
- esac;
- exit 0
Nuestro script, puede tener más opciones. Tantas como queramos.
Ahora vamos a rellenar las secciones del script con los códigos que queremos, en el caso del cliente de No-IP (fijaros que le he añadido la opción 'setup'):
Codigo:
- #!/bin/sh
- #El parámetro $1 contiene la acción a realizar (start, stop, etc)
- . /lib/lsb/init-functions
- case $1 in
- start)
- log_daemon_msg "Iniciando el cliente No-IP" "pepitodelospalotes@servidor.com"
- noip2 -M -c /var/lib/noip2/noip2.pepitodelospalotes.conf
- log_end_msg $?
- break;;
- stop)
- log_daemon_msg "Deteniendo el cliente No-IP" "pepitodelospalotes@servidor.com"
- noip2 -K $( echo $( ps ax | grep noip2 | grep pepitodelospalotes ) | cut -d' ' -f1 ) -c /var/lib/noip2/noip2.pepitodelospalotes.conf
- log_end_msg $?
- break;;
- restart)
- $0 stop
- $0 start
- break;;
- setup)
- log_daemon_msg "Configurando el cliente No-IP" "pepitodelospalotes@servidor.com"
- noip2 -Y -U 30 -u pepitodelospalotes@servidor.com -p pepito -C -c /var/lib/noip2/noip2.pepitodelospalotes.conf
- log_end_msg $?
- break;;
- *)
- echo "Uso: $0 {start|stop|restart|setup}"
- exit 2
- esac;
- exit 0
$ sudo cp
$ sudo chmod +x /etc/init.d/no-ip.sh
Provando el daemon
Para testear vuestro daemon, tan solo tenéis que usar los comandos de siempre, es decir:
$ sudo /etc/init.d/no-ip setup
$ sudo /etc/init.d/no-ip start
$ sudo /etc/init.d/no-ip restart
$ sudo /etc/init.d/no-ip stop
Con estos comandos, hemos iniciado el archivo de No-IP, hemos iniciado el daemon, lo hemos reiniciado y lo hemos parado. De esta manera, cada vez que tengáis que hacer operaciones con No-IP, podréis usar el comando que queráis (start, stop, restart,...).
Automatizando el daemon
Los sistemas GNU/Linux, tienen 6 runlevels que "indican" el estado de la máquina.
Por ejemplo, cuando iniciáis la máquina, automáticamente carga el runlevel 2 que contiene todos los comandos y daemons que tiene que iniciar. Cuando la queréis apagar, pasa al runlevel 6 (si no me equivoco) que contiene los comandos para terminar las aplicaciones. Cada runlevel contiene un conjunto de instrucciones que hacen que el sistema operativo se comporte de una forma u otra. A efectos prácticos, sería como las sesiones de los usuarios donde cada usuario, tiene su escritorio configurado de una manera, con sus programas, archivos, etc. Pues a modo de "estados del ordenador", encontramos los runlevels donde, por ejemplo, podríamos tener un runlevel que, en vez de iniciarnos el entorno gráfico, nos dejara el sistema en modo consola, podríamos escoger cargar o no unos drivers específicos, etc.
Para que nuestro daemon pueda iniciar de forma automática, tenemos que hacer que los runlevels lo carguen al iniciarse y eso se hace con este comando:
$ sudo update-rc.d no-ip.sh defaults 99 04
Y para que se pueda cargar desde cualquier runlevel:
sudo cp -P /etc/rc3.d/no-ip.sh /etc/rc2.d/
Listos! Con estos comandos ya iniciará el script automáticamente al iniciar la máquina (el comando start) y lo finalizará cuando se apague (el comando stop).
Fuente
No hay comentarios:
Publicar un comentario