Posteado por: SKA | enero 26, 2006

Creando un simple daemon con inetd

Muchas veces necsitamos sacar informacion de un servidor estando en otro, por ejemplo como es mi caso: tengo una pagina personal en el server A donde quiero consultar las quotas de disco de un usuario que esta en otro server B, para eso necesito usar el comando

#quota -v usuario

las soluciones mas comunes son hacer esto utilizando webservices por ejemplo, o ejecutandolo remotamente con sudo y ssh.

Algo mas sencillo de implementar es usar para esto inetd. Inetd tiene la habilidad de hacer correr cualquier cosa en un puerto de la maquina donde este, por ejemplo un script de shell, todo lo que llegue por stdin a ese puerto lo mandara al script y todo lo que vaya a stdout lo enviara de vuelta por la conexion abierta hacia el cliente, veamos un ejemplo de como lograr esto.

en el servidor (A):

agregamos una linea en el /etc/services donde describimos el nombre que le vamos a dar al servicio que queremos crear.

consulta   3334/tcp                        # Consulta de quota

(esta demas decir que debemos usar un nombre y un puerto que no existan en el archivo.)

El segundo paso es agregar la siguiente linea en el archivo /etc/inetd.conf

consulta           stream  tcp     nowait  pepito    /usr/local/bin/hello.sh

Esta línea nos indica entre otras cosas, el nombre del servicio, que va por tcp y que como usuario pepito ejecuta el script /usr/local/bin/hello.sh

Bueno como habrán adivinado ahora tenemos que crear el script hello.sh

el que contendra algo como esto

#!/bin/bash

read usuario

/bin/echo $usuario

exit 0

basicamente lo que dice acá es: lee desde stdin y por stdout escribilo.

Al archivo debemos darle permisos de ejecucion para el usuario pepito el cual debe exisitir en el sistema por supuesto.

chown pepito /usr/local/bin/hello.sh

chmod 700 /usr/local/bin/hello.sh

luego de hacer esto reiniciamos inetd

/etc/init.d/inetd restart

y listo el servicio ya estará disponible, para probarlo basta con hacer un telnet al servidor en cuestion y escribirle un nombre por ejemplo:

telnet 192.168.100.2 3334
Trying 192.168.100.2...
Connected to 192.168.100.2.
Escape character is '^]'.
juan
Hello juan
Connection closed by foreign host.
Listo!!!!


About these ads

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: