He preparado un script que acepta una solicitud en un puerto del servidor, luego procesa la entrada del usuario, proporciona una salida a través del mismo puerto y luego muere. El script no siempre se ejecuta, sino que se inicia cuando el cliente abre un determinado puerto. La configuración (de trabajo) en mi máquina Linux es esta:
/etc/services
test_socket 9876/tcp # TestSocket
/etc/xinetd.d/test_socket
# default: on
# description: blah blah blah
service test_socket
{
port = 9876
socket_type = stream
protocol = tcp
wait = no
user = root
server = /export/home/stefano/do_something.php
instances = 20
}
Una vez que un cliente abre el puerto: 9876, el script 'do_something.php' comienza a aceptar el mensaje entrante, lo procesa y proporciona un resultado como salida antes de morir y cerrar la comunicación.
Me gustaría migrar/replicar la arquitectura anterior a una máquina Solaris 10.
Para ello, configuré el mismo valor en el mismo archivo de servicios:
/etc/services
test_socket 9876/tcp # TestSocket
Pero entonces... al ser descartado inetd.d en Solaris10 y reemplazado por svc, ¿cómo puedo crear un manifiesto para reproducir el mismo comportamiento?
Intenté buscar documentación pero no pude encontrar nada que se iniciara bajo demanda cuando el cliente solicita comunicarse a través del puerto del servidor.
Alguien puede ayudarme?
Respuesta1
Primero necesitas crear un inetd.conf
archivo de estilo con tu configuración. Esto debería ser bastante sencillo, algo como:
test_socket stream tcp nowait root /export/.../do_something.php do_something.php
Luego ejecute ese comando para importar esa descripción de servicio a smf
.
inetconv -i inetd.conf-style-file
Si desea echar un vistazo primero a lo que se crearía sin importarlo, puede ejecutar:
inetconv -n -i inetd.conf-style-file -o /tmp
Tenga en cuenta que una vez importado smf
, usted administra el servicio a través delinetadm
comando, por ejemplo:
inetadm -e svc:/network/test_socket/tcp:default # enable the service
inetadm -d svc:/network/test_socket/tcp:default # disable the service
inetadm -l svc:/network/test_socket/tcp:default # list the service properties