Solaris:套接字监听端口(Linux 上相当于 /etc/xinetd.d)

Solaris:套接字监听端口(Linux 上相当于 /etc/xinetd.d)

我准备了一个脚本,它接受服务器端口上的请求,然后处理用户输入,通过同一端口提供输出,然后停止。该脚本并非始终运行,但会在客户端打开某个端口时启动。我的 Linux 机器上的(工作)配置如下:

/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
   }

一旦客户端打开端口:9876,“do_something.php”脚本就会开始接受传入消息,对其进行处理并在终止并关闭通信之前给出结果作为输出。

我想将上述架构迁移/复制到 Solaris 10 机器。

为了这个目的我在相同的服务文件上配置了相同的值:

/etc/services
    test_socket   9876/tcp    # TestSocket

但是... 由于 inetd.d 在 Solaris10 上被解散并被 svc 取代,我该如何创建清单来重现相同的行为?

我尝试搜索文档,但无法找到当客户端要求通过服务器端口进行通信时按需启动的任何内容。

有谁能够帮助我?

答案1

首先,您需要创建一个inetd.conf包含配置的样式文件。这应该非常简单,例如:

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

然后运行该命令将该服务描述导入到smf

inetconv -i inetd.conf-style-file

如果您想先看看在不导入的情况下会创建什么,您可以运行:

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

请注意,一旦导入smf,您就可以通过inetadm命令,例如:

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

相关内容