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

しかし、Solaris10 では inetd.d が廃止され、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

関連情報