A maneira UCSPI-TCP
Existem outros conjuntos de ferramentas além do netcat. Aqui está como usar alguns deles. Todos eles presumem a existência de um service
script que executa o seu func
, seja ele qual for:
#! / bin / sh
enquanto lê -r MESSAGE
Faz
eco 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}" rx "$ {MESSAGE}"
func
feito
As variáveis de ambiente TCPREMOTEIP
e TCPREMOTEPORT
são definidas pelo protocolo UCSPI-TCP.
O script é gerado como um processo individual por conexão TCP usando os vários conjuntos de ferramentas. A seguir, as ferramentas são mostradas como usadas em um script curto. Esse script, de nome convencional run
, é como alguém os executaria sob um gerente de serviços da família daemontools. É claro que eles podem ser invocados diretamente.
Bernstein ucspi-tcp
Com o ucspi-tcp de Daniel J. Bernstein, tcpserver
gera o service
script:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./service
Existem versões aprimoradas para IPv6 do Bernstein ucspi-tcp. Com Erwin Hoffman, as tcpserver
tentativas de lidar com IPv4 e IPv6 em um (se o sistema operacional suportar isso, alguns não) e geram o service
script:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-networking, s6 e execline
Com S6-redes de Laurent Bercot, s6-tcpserver4
e s6-tcpserver6
lidar com IPv4 e IPv6 separadamente, e gerar o service
script:
#! / command / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./serviço
#! / command / execlineb
s6-tcpserver6 -v :: 0 7777
./serviço
Pode-se construir servidores mais complexos interpondo ferramentas como s6-tcpserver-access
e s6-applyuidgid
na cadeia imediatamente antes ./service
.
ferramentas UCSPI nosh
Com o conjunto de ferramentas nosh, tcp-socket-listen
escuta no soquete TCP, manipulando novamente IPv4 e IPv6 de forma simultânea se o sistema operacional suportar isso e as cadeias às tcp-socket-accept
quais, por sua vez, gera o service
script:
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
tcp-socket-accept --verbose --localname 0
./serviço
Ou então, são executados dois processos separados, em sistemas operacionais como o OpenBSD:
#! / bin / nosh
tcp-socket-listen 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./serviço
#! / bin / nosh
tcp-socket-listen :: 7777
tcp-socket-accept --verbose --localname ::
./serviço
Pode-se construir servidores mais complexos interpondo ferramentas como ucspi-socket-rules-check
e setuidgid
na cadeia.
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
usuário não privilegiado setuidgid
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./serviço
Pape ipsvd
Com o ipsvd de Gerrit Pape, tcpsvd
gera o service
script:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./service
UCSPI-UDP
O service
script comum pode manipular quando a entrada padrão é um soquete de fluxo . Mas você não especificou o TCP explicitamente.
Embora alguns dos kits de ferramentas mencionados acima possam ser usados para criar servidores UDP de maneira semelhante a como se pode usá-los para criar servidores TCP (cf udp-socket-listen
em nosh), é complicado criar o programa de serviço real com o shell script, pois os componentes internos do shell não necessariamente lidar bem quando a entrada padrão é um soquete de datagrama .
Leitura adicional
- Protocolo:
- conjuntos de ferramentas:
- Daniel J. Bernstein. ucspi-tcp . cr.yp.to.
- rede s6 . Laurent Bercot. skarnet.org.
- S6 . Laurent Bercot. skarnet.org.
- Jonathan de Boyne Pollard (2016). nosh . Programas.
- ipsvd . Gerrit Pape. smarden.org.
- manuais de referência: