jueves, 1 de octubre de 2009

Jugando con inedt

Hoy toca trastear con inedt. Vamos a practicar y hacer que un escript bash escuche un puerto concreto y que, al conectarnos, se ejecute.
Primero tenemos que instalar el paquete openbsd-inetd.
Lo haremos con el clásico:
> sudo aptitude install openbsd-inetd

Ahora crearemos con nuestro editor preferido ( vim, nano, gedit... ) un pequeño script que se creará cuando nos conectemos en un puerto determinado. El script puede poner lo que quieras ( menos rm / -rf, no jodamos! ). En el ejemplo el fichero se llamará script-actualizacion.sh y pondremos esto:
>#! /bin bash
> echo "Actualización semi-automatica"
> sudo aptitude update
> sudo aptitude safe-upgrade -y #Con -y asumimos que queremos instalar las actualizaciones
Y le damos permisos de escritura al ficherito:
>chmod u+x script-actualizacion.sh
El fichero lo podemos guardar en /home/usuario_pruebas/script-actualizacion.sh cada uno que lo guarde donde le apetezca pero se tiene que acordar de la ruta. Bien, mas madera, que es la guerra! Ahora toca configurar nuestro fichero services, para dar mas realismo al asunto :) amosallá.

Editamos el fichero /etc/services ( sudo gedit /etc/services )
y añadimos al finaaaal de todo lo siguiente:
>actualizacion 12021/tcp #nuestro nombre de puerto!!
y guardamos el fichero. Bien, pero... que acabamos de hacer? Easy, le hemos dicho a la maquina que el puerto 12021 ahora se llama "actualizacion". Así de simple.
Ahora vamos a modificar un ficherito llamado inetd.conf que se encuentra en /etc. Léase:
>sudo gedit /etc/inetd.conf
y ahora añadiremos esta linea al fichero:
>update stream tcp nowait root /usr/sbin/tcpd /home/usuario_pruebas/script-actualizacion.sh
Amoshaber... explico un poquito.
  • "actualizacion": esto es el nombre que hemos elegido antes para nombrar a un puerto. En caso de que no queramos hacer el proceso anterior aqui pondríamos 12021.
  • "/home/usuario_pruebas/script-actualizacion.sh": La ruta de vuestro script.
Reiniciamos el servicio inetd con el comando:
>sudo service service openbsd-inetd restart
Y ahora para comprobar si todo ha ido bien hacemos un:
>netstat -ta
Y voalà!!! Nos aparece una línea que reza algo parecido a esto:
>tcp 0 0 *:update *:* ESCUCHAR

Enhorabuena!! Tenemos nuestro servicio arriba. Vamos a probarlo. Cómo? Pues con un simple telnet:
>telnet localhost update
Y que tenemos? pues la salida de nuestro fantastico script y el PC actualizado! Ahora podemos probar de ejecutarlo remotamente desde otro PC de la red! ( Atención que el otro PC no tendra configurado el puerto 12021 como "update" osea que haremos un >telnet ip_servidor 12021 ).

No hay comentarios:

Publicar un comentario