From bfba1cc65f326121878fa877cedb799678f36751 Mon Sep 17 00:00:00 2001 From: Alexis Ben Miloud--Josselin Date: Mon, 4 Mar 2024 17:04:35 +0100 Subject: [PATCH] TipsShell: Ajouter connexion TCP --- TipsShell.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) 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 +~~~