Я создал этот сценарий BASH под названием blah, который делает что-то вроде этого (см. ниже)
#./blah -x "bindas"
hello bindas
Я хотел бы выполнить скрипт, используя xinetd с динамической переменной, что-то вроде примера ниже
#telnet localhost 809 "bindas"
hello bindas.
Я не собираюсь использовать его с telnet, на самом деле какое-то другое приложение попытается связаться с этим сервером через порт 809. Как сделать так, чтобы в файле xinetd принимались аргументы? Я обнаружил, что server_args может принимать параметры, но как насчет этого, это сработает?
# This file is being maintained by Puppet.
# DO NOT EDIT
service cont_blah
{
port = 809
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
groups = yes
server = /usr/local/bin/blah
server_args = -x $1
}
Нет, это не сработает.
Входные данные, полученные через ваш TCP-сокет, не интерпретируются xinetd, поэтому их нельзя передать в качестве аргумента командной строки вашему скрипту. Ваш скрипт должен будет прочитать все данные, полученные как стандартный ввод, например.
#!/bin/bash
read name
echo "Hello $name"