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!!!!