Solaris: soquete escutando em uma porta (equivalente a /etc/xinetd.d no Linux)

Solaris: soquete escutando em uma porta (equivalente a /etc/xinetd.d no Linux)

Preparei um script que aceita uma solicitação em uma porta do servidor, processa a entrada do usuário, fornece uma saída pela mesma porta e depois morre. O script nem sempre está em execução, mas é iniciado quando uma determinada porta é aberta pelo cliente. A configuração (de trabalho) na minha máquina Linux é 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
   }

Assim que um cliente abre a porta: 9876, o script 'do_something.php' começa a aceitar a mensagem recebida, processa-a e fornece um resultado como saída antes de morrer e fechar a comunicação.

Gostaria de migrar/replicar a arquitetura acima para a máquina Solaris 10.

Para isso, configurei o mesmo valor no mesmo arquivo de serviços:

/etc/services
    test_socket   9876/tcp    # TestSocket

Mas então... sendo o inetd.d descartado no Solaris10 e substituído pelo svc, como posso criar um manifesto para reproduzir o mesmo comportamento?

Tentei pesquisar a documentação, mas não consegui descobrir nada que fosse iniciado sob demanda quando o cliente solicitasse comunicação pela porta do servidor.

Alguém pode me ajudar?

Responder1

Primeiro você precisa criar um inetd.confarquivo de estilo com sua configuração. Isso deve ser bem simples, algo como:

test_socket stream tcp nowait root /export/.../do_something.php do_something.php

Em seguida, execute esse comando para importar a descrição do serviço para o arquivo smf.

inetconv -i inetd.conf-style-file

Se você quiser primeiro dar uma olhada no que seria criado sem importá-lo, você pode executar:

inetconv -n -i inetd.conf-style-file -o /tmp

Observe que uma vez importado para smf, você administra o serviço através doinetadmcomando, por exemplo:

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

informação relacionada