Je me demande comment obtenir un script shell pour écouter sur un certain port (peut-être en utilisant netcat?). Espérons que pour qu'un message soit envoyé à ce port, le script enregistre le message puis exécute une fonction.
Exemple:
L'ordinateur 1 a le script exécuté en arrière-plan, le script a ouvert le port 1234 au trafic entrant
L'ordinateur 2 envoie un message "Bonjour tout le monde" au port 1234 de l'ordinateur 1
Le script sur l'ordinateur 1 enregistre le message "bonjour le monde" dans une variable $ MESSAGE
Le script exécute la fonction maintenant que la variable $ MESSAGE a été définie
Comment dois-je procéder pour faire un don?
la source
netcat
existe après une connexion.socat
ferait de même si vous supprimez ", fork" de ma ligne de commande.La voie UCSPI-TCP
Il existe des jeux d'outils autres que netcat. Voici comment en utiliser quelques-uns. Ils présument tous l'existence d'un
service
script qui exécute votrefunc
, quel qu'il soit:Les variables d'environnement
TCPREMOTEIP
etTCPREMOTEPORT
sont définies par le protocole UCSPI-TCP.Le script est généré comme un processus individuel par connexion TCP à l'aide des différents jeux d'outils. Dans ce qui suit, les outils sont présentés comme utilisés dans un court script. Un tel script, conventionnellement nommé
run
, est de savoir comment les exécuter sous un gestionnaire de services de la famille daemontools. Ils peuvent bien entendu être invoqués directement.Bernstein ucspi-tcp
Avec ucspi-tcp de Daniel J. Bernstein, donne naissance
tcpserver
auservice
script:Il existe des versions améliorées compatibles IPv6 de Bernstein ucspi-tcp. Avec Erwin Hoffman,
tcpserver
tente de gérer à la fois IPv4 et IPv6 en un (si le système d'exploitation le prend en charge, quelques-uns ne le font pas) et génère leservice
script:Bercot s6-networking, s6 et execline
Avec s6-réseau de Laurent Bercot,
s6-tcpserver4
ets6-tcpserver6
gérer IPv4 et IPv6 séparément, et reproduire leservice
scénario:On peut construire des serveurs plus complexes en interposant des outils tels que
s6-tcpserver-access
ets6-applyuidgid
dans la chaîne immédiatement avant./service
.nosh UCSPI tools
Avec le jeu d'outils nosh,
tcp-socket-listen
écoute sur le socket TCP, gérant à nouveau IPv4 et IPv6 simultanément si le système d'exploitation le prend en charge, et les chaînestcp-socket-accept
auxquelles à son tour génère leservice
script:Ou on exécute deux processus distincts, sur des systèmes d'exploitation tels que OpenBSD:
On peut construire des serveurs plus complexes en interposant des outils tels que
ucspi-socket-rules-check
etsetuidgid
dans la chaîne.Pape ipsvd
Avec l'ipsvd de Gerrit Pape, lance
tcpsvd
leservice
script:UCSPI-UDP
Le
service
script commun peut gérer lorsque l'entrée standard est une socket de flux . Mais vous n'avez pas spécifié explicitement TCP.Bien que certaines des boîtes à outils susmentionnées puissent être utilisées pour construire des serveurs UDP de la même manière que la façon dont on peut les utiliser pour construire des serveurs TCP (cf.
udp-socket-listen
en nosh), il est difficile de construire le programme de service réel avec un script shell, car les buildins du shell ne le font pas nécessairement faire face lorsque l'entrée standard est une prise de datagramme .Lectures complémentaires
tcpserver
programme . ucspi-tcp.tcpserver
. ucspi-tcp6 . fehcom.de.s6-tcpserver4
. Laurent Bercot. mise en réseau s6 . skarnet.org.s6-tcpserver6
. Laurent Bercot. mise en réseau s6 . skarnet.org.s6-tcpserver-access
. Laurent Bercot. mise en réseau s6 . skarnet.org.s6-applyuidgid
. Laurent Bercot. s6 . skarnet.org.tcpserver
. Guide de nosh . Logiciels.tcp-socket-listen
. Guide de nosh . Logiciels.tcp-socket-accept
. Guide de nosh . Logiciels.ucspi-socket-rules-check
. Guide de nosh . Logiciels.setuidgid
. Guide de nosh . Logiciels.udp-socket-listen
. Guide de nosh . Logiciels.tcpsvd
. ipsvd . Gerrit Pape. smarden.org.la source
Cela peut également être fait avec
udpsvd
qui est disponible sur Ubuntu / Debian ( voir la page de manuel ) ainsi que intégré à busybox. Exemple:Remplacez
cat
par votre script shell pour exécuter, stdin est le paquet.Avec
netcat
, vous pouvez exécuter en boucle pour continuer à écouter et passer chaque paquet àmyscript
:Si vous souhaitez transmettre tous les paquets reçus sous forme de flux à une seule invocation de votre script:
la source