Il modo UCSPI-TCP
Esistono set di strumenti diversi da netcat. Ecco come usarne alcuni. Presumono tutti l'esistenza di uno service
script che esegue il tuo func
, qualunque esso sia:
#! / Bin / sh
durante la lettura -r MESSAGGIO
fare
echo 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}" rx "$ {MESSAGE}"
func
fatto
Le variabili di ambiente TCPREMOTEIP
e TCPREMOTEPORT
sono definite dal protocollo UCSPI-TCP.
Lo script viene generato come processo individuale per connessione TCP utilizzando i vari set di strumenti. Di seguito, gli strumenti sono mostrati come utilizzati all'interno di un breve script. Una tale sceneggiatura, convenzionalmente chiamata run
, è come li gestiresti sotto un gestore di servizi della famiglia demoniols. Naturalmente possono essere invocati direttamente.
Bernstein ucspi-tcp
Con ucspi-tcp di Daniel J. Bernstein, tcpserver
genera la service
sceneggiatura:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./service
Esistono versioni migliorate IPv6 di Bernstein ucspi-tcp. Con Erwin Hoffman, tcpserver
tenta di gestire sia IPv4 che IPv6 in uno (se il sistema operativo lo supporta, alcuni non lo fanno) e genera lo service
script:
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-networking, s6 ed execline
Con S6-networking di Laurent Bercot, s6-tcpserver4
e s6-tcpserver6
gestire IPv4 e IPv6 a parte, e deporre le uova la service
sceneggiatura:
#! / Comando / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./servizio
#! / Comando / execlineb
s6-tcpserver6 -v :: 0 7777
./servizio
Si possono costruire server più complessi interponendo strumenti come s6-tcpserver-access
e s6-applyuidgid
nella catena immediatamente prima ./service
.
nosh UCSPI tools
Con il set di strumenti nosh, tcp-socket-listen
ascolta sul socket TCP, gestendo di nuovo contemporaneamente IPv4 e IPv6 se il sistema operativo lo supporta e catene a tcp-socket-accept
cui a sua volta genera lo service
script:
#! / Bin / nosh
tcp-socket-hear --combine4and6 :: 7777
tcp-socket-accept --verbose --localname 0
./servizio
Oppure si eseguono due processi separati, su sistemi operativi come OpenBSD:
#! / Bin / nosh
tcp-socket-Listen 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./servizio
#! / Bin / nosh
tcp-socket-hear :: 7777
tcp-socket-accept --verbose --localname ::
./servizio
Si possono costruire server più complessi interponendo strumenti come ucspi-socket-rules-check
e setuidgid
nella catena.
#! / Bin / nosh
tcp-socket-hear --combine4and6 :: 7777
setuidgid utente non privilegiato
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./servizio
Pape ipsvd
Con l'iPvd di Gerrit Pape, tcpsvd
genera la service
sceneggiatura:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./service
Ucspi-UDP
Lo service
script comune può gestire quando l'input standard è un socket di flusso . Ma non hai specificato TCP esplicitamente.
Sebbene alcuni dei suddetti toolkit possano essere usati per costruire server UDP in modo simile a come si possono usare per costruire server TCP (cfr udp-socket-listen
in nosh), è difficile costruire il programma di servizio effettivo con script di shell, poiché i builtin della shell non lo fanno necessariamente far fronte bene quando l'input standard è un socket di datagramma .
Ulteriori letture
- Protocollo:
- set di strumenti:
- Daniel J. Bernstein. ucspi-tcp . cr.yp.to.
- rete s6 . Laurent Bercot. skarnet.org.
- s6 . Laurent Bercot. skarnet.org.
- Jonathan de Boyne Pollard (2016). nosh . Software.
- ipsvd . Gerrit Pape. smarden.org.
- manuali di riferimento: