diff --git a/TipsShell.md b/TipsShell.md index 6addd193..8ce874aa 100644 --- a/TipsShell.md +++ b/TipsShell.md @@ -844,3 +844,38 @@ $ bc > 1B 27 ~~~ + +### Tester une connexion TCP ou UDP + +Si on a pas [`telnet(1)`](https://manpages.debian.org/bullseye/telnet/telnet.1.en.html) ou [`netcat(1)`](https://manpages.debian.org/bullseye/netcat-openbsd/netcat.1.en.html) sous la main, on peut utiliser `/dev/tcp` et `/dev/udp`. Par exemple, pour tester une connexion à Redis : + +~~~{.bash} +$ exec 3<> /dev/tcp/127.0.0.1/6379 +$ echo quit >&3 +$ cat <&3 ++OK +~~~ + +Un autre exemple avec HTTP : + +~~~{.bash} +$ exec 3<> /dev/tcp/example.com/80 +$ printf 'GET /index.html HTTP/1.1\r\nHost: example.com\r\n\r\n' >&3 +$ cat <&3 +HTTP/1.1 200 OK +[...] +~~~ + +Dans ces exemples, on écrit avec une commande, puis on lit avec une autre. Pour avoir un semblant d'interactivité, on peut exécuter le processus qui lit la réponse en arrière plan avant d'écrire. Par exemple avec Redis : + +~~~{.bash} +$ exec 3<> /dev/tcp/127.0.0.1/6379 +$ cat <&3 & cat >&3 +[1] 31415 +auth REDACTED ++OK +quit ++OK +^C +[1]+ Done cat 0<&3 +~~~