Самый простой способ - создать собственную службу xinetd
следующим образом:
/etc/services
:
...
foo 500/tcp
...
/etc/xinetd.d/foo
:
service foo
{
disable = no
bind = 127.0.0.1
socket_type = stream
protocol = tcp
log_on_failure += USERID
server = /usr/local/lib/foo.sh
user = il
instances = UNLIMITED
wait = no
log_on_success =
}
/usr/local/lib/foo.sh
:
read ...
...
echo ...
Таким образом, ваш shell-скрипт будет выполняться для каждого клиентского соединения с stdin/stdout, подключенными непосредственно к сокету.
sed -E 's/.*"([^"]+)".*/\1/
-E
:sed
будет использовать расширенное регулярное выражение /
:разделитель шаблона и замены, который будет использоваться. .*"([^"]+)".*
:лучший известный мне способ объяснить регулярное выражение — это граф:/
:разделитель между вашим регулярным выражением и вашей заменой \1
:замените исходную строку на номер группы 1:1.22.0
в этом случае. /
:последний разделитель без опций после него, поэтому он заменит только один раз строку. Надеюсь, это объяснение достаточно хорошо.