125 votes

Est-ce que cURL peut envoyer des requêtes vers des sockets ?

J'ai un serveur HTTP qui fonctionne à /var/run/my-server.sock et je veux le tester en envoyant une simple requête en utilisant cURL. Cela peut-il être fait en utilisant cURL ? Est-il possible de le faire tout court, ou faut-il mettre en place un proxy inverse ?

J'imagine quelque chose comme ça :

curl socket:/var/run/my-server.sock:/test/path

183voto

Dreamcat4 Points 1689

La fonctionnalité a été ajoutée dans curl 7.40 .

curl --unix-socket /var/run/docker.sock http:/images/json

Un autre exemple :

curl --no-buffer -XGET --unix-socket /docker.sock http:/events

Qui spécifie le GET explicitement (plutôt que par hypothèse). Et ne fera pas de buffer (pour tail -f mise à jour en temps réel).

(La première version d'Ubuntu à être livrée avec curl 7.40 ou plus récent était la 15.10).

cURL 7.50 et plus exige qu'une URL valide soit fournie Ainsi, pour exécuter les exemples ci-dessus avec cURL 7.50, un nom d'hôte "factice" doit être ajouté, par exemple :

curl --unix-socket /var/run/docker.sock http://localhost/images/json

y

curl --no-buffer -XGET --unix-socket /docker.sock http://localhost/events

13voto

steady rain Points 528

Je ne suis pas sûr, mais d'après ce billet :

cela ne semble pas être le cas.

Par ceci :

il semble que socat ou nc peuvent le faire, snip de la snip ci-dessus :

# Socat version
echo -e "GET /images/json HTTP/1.1\r\n" | socat unix-connect:/var/run/docker.sock STDIO

# nc version (netcat-freebsd)
echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock

Je n'ai essayé ni l'un ni l'autre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X