• [^] # Re: Netcat?

    Posté par (site web personnel) . En réponse au journal Gestion des services avec runit. Évalué à 9. Dernière modification le 10 avril 2019 à 23:59.

    une ligne de bash "illisible" (de mon point de vue, ce concentré de caractères sans espaces est pénible à lire du moins) et qui risque de se retourner contre moi, je préfère les 50 lignes de C standard.

    Pour bien connaître (ou avoir connu) les deux, chacun se défend bien en termes d'illisibilité. Pour améliorer les choses quand on programme le shell, il faut utiliser des fonctions dont les noms sont explicatifs, je fais la traduction:

    listen_udp()
    {
     nc -u 12345 -l
    }
    sendto_udp()
    {
     # Sur ma version de NC j'ai besoin du -w 0
     # pour que NC arrête d'essayer de lire STDIN après
     # la fin du message.
     nc -w 0 -u 127.0.0.1 12345
    }

    Et le programme s'écrit

    listen_udp & echo "le résultat" | sendto_udp

    Cela démarre en arrière-plan (&) un serveur qui écrit tous les messages reçus sur UDP puis envoie un message sur ce serveur.

    Aussi, j'ai appris à me méfier d'echo, et une pratique que j'essaie de faire au max est de toujours utiliser printf, pour éviter les surprises.

    La "bonne pratique" est de n'utiliser echo que sur un texte constant (c'est le cas ici) qui de plus ne commence pas par un tiret. Pour tout le reste on utilise printf en utilisant une chaîne de format constante.

    a doit être lié au fait que je suis un dev qui joue aux admins, et pas un vrai admin

    On a le droit de bien connaître le shell même sans être admin. :-)