Ich habe ein Skript vorbereitet, das eine Anfrage an einem Server-Port akzeptiert, dann Benutzereingaben verarbeitet, eine Ausgabe über denselben Port bereitstellt und dann beendet wird. Das Skript läuft nicht immer, sondern startet, wenn ein bestimmter Port vom Client geöffnet wird. Die (funktionierende) Konfiguration auf meinem Linux-Rechner ist diese:
/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
}
Sobald ein Client den Port 9876 öffnet, beginnt das Skript „do_something.php“, eingehende Nachrichten anzunehmen, sie zu verarbeiten und ein Ergebnis als Ausgabe auszugeben, bevor die Kommunikation beendet und geschlossen wird.
Ich möchte die obige Architektur auf eine Solaris 10-Maschine migrieren/replizieren.
Zu diesem Zweck habe ich denselben Wert in derselben Servicedatei konfiguriert:
/etc/services
test_socket 9876/tcp # TestSocket
Aber wie kann ich dann ein Manifest erstellen, um dasselbe Verhalten zu reproduzieren, nachdem inetd.d unter Solaris10 verworfen und durch svc ersetzt wurde?
Ich habe versucht, die Dokumentation zu durchsuchen, konnte jedoch nichts finden, das bei Bedarf gestartet wird, wenn der Client die Kommunikation über den Serverport anfordert.
Kann mir jemand helfen?
Antwort1
inetd.conf
Sie müssen zunächst eine Stildatei mit Ihrer Konfiguration erstellen . Dies sollte ziemlich unkompliziert sein und etwa so aussehen:
test_socket stream tcp nowait root /export/.../do_something.php do_something.php
Führen Sie dann diesen Befehl aus, um die Dienstbeschreibung zu importieren smf
.
inetconv -i inetd.conf-style-file
Wenn Sie zunächst einen Blick darauf werfen möchten, was ohne den Import erstellt würde, können Sie Folgendes ausführen:
inetconv -n -i inetd.conf-style-file -o /tmp
smf
Beachten Sie , dass Sie den Dienst nach dem Import in über dasinetadm
Befehl, zB:
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