Путь UCSPI-TCP
Есть наборы инструментов, отличные от netcat. Вот как использовать некоторые из них. Все они предполагают существование serviceскрипта, который запускает ваш func, что бы это ни было:
#! / Bin / ш
пока читаешь -r СООБЩЕНИЕ
делать
echo 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}" rx "$ {MESSAGE}"
FUNC
сделанный
В TCPREMOTEIPи TCPREMOTEPORTпеременные среды определяются протоколом UCSPI-TCP.
Сценарий создается как отдельный процесс для каждого соединения TCP с использованием различных наборов инструментов. В дальнейшем инструменты будут показаны как используемые в коротком скрипте. Такой сценарий, условно названный run, - это то, как его можно запустить под менеджером службы семейства daemontools. Они, конечно, могут быть вызваны напрямую.
Бернштейн UCSPI-TCP
С UCSPI-ТКФ Daniel J. Бернштейна, tcpserverпорождает serviceсценарий:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./service
Существуют расширенные версии Bernstein ucspi-tcp с поддержкой IPv6. В случае с Эрвином Хоффманом tcpserverпопытки обрабатывать как IPv4, так и IPv6 в одном (если операционная система поддерживает это, некоторые не поддерживают) и порождают serviceсценарий:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-network, s6 и execline
С s6-сетью Лорана Беркота, s6-tcpserver4и s6-tcpserver6обрабатывать IPv4 и IPv6 отдельно, и порождать serviceсценарий:
#! / Команда / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./оказание услуг
#! / Команда / execlineb
s6-tcpserver6 -v :: 0 7777
./оказание услуг
Можно создавать более сложные серверы, вставляя инструменты, такие как s6-tcpserver-accessи s6-applyuidgidв цепочку, непосредственно перед этим ./service.
Nosh UCSPI инструменты
С помощью набора инструментов nosh tcp-socket-listenпрослушивает сокет TCP, снова обрабатывая IPv4 и IPv6 одновременно, если операционная система поддерживает это, и цепочки, в tcp-socket-acceptкоторые в свою очередь порождает serviceсценарий:
#! / Bin / перекус
tcp-socket-listen --combine4and6 :: 7777
tcp-socket-accept --verbose --localname 0
./оказание услуг
Или один запускает два отдельных процесса в операционных системах, таких как OpenBSD:
#! / Bin / перекус
tcp-socket-listen 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./оказание услуг
#! / Bin / перекус
tcp-socket-listen :: 7777
tcp-socket-accept --verbose --localname ::
./оказание услуг
Можно создавать более сложные серверы, вставляя такие инструменты, как ucspi-socket-rules-checkи setuidgidв цепочку.
#! / Bin / перекус
tcp-socket-listen --combine4and6 :: 7777
setuidgid непривилегированный пользователь
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./оказание услуг
Папе Ипсвд
С ipsvd Геррита Папа tcpsvdпорождает serviceсценарий:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./service
UCSPI-UDP
Общий serviceсценарий может обрабатывать, когда стандартный ввод является потоковым сокетом. Но вы не указали TCP явно.
Хотя некоторые из вышеупомянутых наборов инструментов можно использовать для создания серверов UDP аналогично тому, как их можно использовать для создания серверов TCP (см. udp-socket-listenNosh), сложно создать реальную служебную программу с помощью сценария оболочки, поскольку встроенные функции оболочки не Обязательно хорошо справляются, когда стандартный ввод является сокетом дейтаграммы .
дальнейшее чтение
- Протокол:
- наборы инструментов:
- Даниэль Дж. Бернштейн. ucspi-tcp . cr.yp.to.
- s6-сеть . Лоран Берко. skarnet.org.
- с6 . Лоран Берко. skarnet.org.
- Джонатан де Бойн Поллард (2016). перекус . Softwares.
- ipsvd . Геррит Папе. smarden.org.
- справочные руководства:
- Даниэль Дж. Бернштейн. Программа . UCSPI-ТСР.
tcpserver
- Эрвин Хоффманн
tcpserver, ucspi-tcp6 . fehcom.de.
s6-tcpserver4, Лоран Берко. s6-сеть . skarnet.org.
s6-tcpserver6, Лоран Берко. s6-сеть . skarnet.org.
s6-tcpserver-access, Лоран Берко. s6-сеть . skarnet.org.
s6-applyuidgid, Лоран Берко. с6 . skarnet.org.
- Джонатан де Бойн Поллард (2016).
tcpserver, Руководство Nosh . Softwares.
- Джонатан де Бойн Поллард (2016).
tcp-socket-listen, Руководство Nosh . Softwares.
- Джонатан де Бойн Поллард (2016).
tcp-socket-accept, Руководство Nosh . Softwares.
- Джонатан де Бойн Поллард (2016).
ucspi-socket-rules-check, Руководство Nosh . Softwares.
- Джонатан де Бойн Поллард (2016).
setuidgid, Руководство Nosh . Softwares.
- Джонатан де Бойн Поллард (2016).
udp-socket-listen, Руководство Nosh . Softwares.
tcpsvd, ipsvd . Геррит Папе. smarden.org.