Путь 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-listen
Nosh), сложно создать реальную служебную программу с помощью сценария оболочки, поскольку встроенные функции оболочки не Обязательно хорошо справляются, когда стандартный ввод является сокетом дейтаграммы .
дальнейшее чтение
- Протокол:
- наборы инструментов:
- Даниэль Дж. Бернштейн. 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.