Solaris: socket escuchando en un puerto (equivalente a /etc/xinetd.d en Linux)

Solaris: socket escuchando en un puerto (equivalente a /etc/xinetd.d en Linux)

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.confarchivo 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 delinetadmcomando, 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

información relacionada