Solaris: прослушивание сокетов через порт (эквивалент /etc/xinetd.d в Linux)
Я подготовил сценарий, который принимает запрос на порт сервера, затем обрабатывает пользовательский ввод, обеспечивает вывод через тот же порт и затем умирает. Сценарий не всегда выполняется, но запускается, когда клиент открывает определенный порт. (Рабочая) конфигурация на моей машине с 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