J’essaie de créer un socket sur lequel le client reçoit une réponse en fonction de sa demande, mais je ne peux pas comprendre comment y parvenir avec CentOS 7.
Jusqu’à présent, j’ai ouvert le socket sur le port 100 et enregistré la demande du client dans un fichier:
#!/bin/sh nc -lvk 88.109.110.161 100 > port100.txt 2>&1
En tant que client, j’envoie la demande:
echo "Hello" | nc 88.109.110.161 100
Et le fichier est rempli avec:
Ncat: Version 6.40 ( http://nmap.org/ncat ) Ncat: Listening on 88.109.110.161:100 Ncat: Connection from 88.109.110.161. Ncat: Connection from 88.109.110.161:47578. Hello
Je souhaite que le client reçoive la réponse en fonction de la requête, si la requête est Bonjour, puis reçoit World, si World alors Hello. Comment puis je faire ça?
Ok, je suis sur macOS
maintenant, donc nc
est probablement légèrement différent sur CentOS 7
, mais l’exemple ci-dessous devrait être utile de toute façon. Si vous souhaitez modifier le texte transmis au script du serveur, puis imprimé, essayez de le modifier avant de le redirect vers un fichier. Utilisez pipe pour le traiter en boucle, par exemple:
#!/bin/sh nc -lvk 127.0.0.1 8080 | while read in do echo '------' if [[ $in == 'Hello' ]]; then echo 'World' elif [[ $in == 'World' ]]; then echo 'Hello' else echo "$in" fi done | tee out.txt
Certaines demandes de clients pour tester: echo 'test' | nc 127.0.0.1 8080 echo 'World' | nc 127.0.0.1 8080 echo 'Hello' | nc 127.0.0.1 8080
echo 'test' | nc 127.0.0.1 8080 echo 'World' | nc 127.0.0.1 8080 echo 'Hello' | nc 127.0.0.1 8080
Exemple de sortie:
------ test ------ Hello ------ World ^C
Merci à tee
sortie sera également dans out.txt
. Je viens de redirect stdout
pour plus de simplicité.