Pode cURL enviar pedidos para sockets?

58

Eu tenho um servidor HTTP em execução em /var/run/my-server.sock e quero testá-lo enviando uma solicitação simples usando cURL. Isso pode ser feito usando cURL? Pode ser feito, ou deve haver um proxy reverso?

Estou imaginando algo assim:

curl socket:/var/run/my-server.sock:/test/path
    
por Hubro 31.10.2014 / 15:46

2 respostas

82

O recurso foi adicionado em curl 7.40 .

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

Outro exemplo:

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

Qual especifica o GET explicitamente (em vez de assumido). E não fará buffer (por tail -f atualização em tempo real).

(O primeiro lançamento do Ubuntu a ser lançado com o curl 7.40 ou mais recente foi 15.10).

cURL 7.50 e até requer que uma URL válida seja fornecida , incluindo um nome de host, para executar o código acima Exemplos com cURL 7.50, um nome de host "fictício" deve ser adicionado, por exemplo:

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

e

curl --no-buffer -XGET --unix-socket /docker.sock http://localhost/events
    
por 09.06.2015 / 11:56
8

Não tenho certeza, mas de acordo com esse ticket:

não parece ser o caso.

Por isso:

parece que socat ou nc podem fazer isso, recorte do recorte acima:

# 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

Não tentei eu mesmo.

    
por 31.10.2014 / 16:14

Tags