Não é possível canalizar para o netcat

1

Eu tenho um proxy squid em execução em um contêiner docker, iniciado assim:

docker run --privileged -d --publish=3128:3128 --name foo squid

Eu quero obter algumas informações dele, de outro container chamado bar .

docker run --rm -it --name bar ubuntu:trusty bash

Se eu executar isso no contêiner bar :

nc 172.17.0.1 3128
HEAD /

Então eu recebo alguma saída do servidor. Mas se eu executar isso:

echo 'HEAD /' | nc 172.17.0.1 3128

Eu não recebo nada. Porque não?

    
por z0r 06.04.2016 / 07:40

1 resposta

3

Provavelmente porque o netcat sai logo após obter um fim de arquivo em sua entrada padrão. Experimente

(echo 'HEAD /'; sleep 5) | nc 172.17.0.1 3128

para manter a entrada local do netcat aberta por tempo suficiente para ler os dados da rede e escrevê-los na saída padrão. O 5 é o número de segundos para atrasar.

O Netcat tem uma opção para lidar com isso. Se você especificar um tempo limite de parada negativo, ele aguardará a conexão de rede fechar em vez de encerrar após EOF em stdin:

echo 'HEAD /' | nc -q -1 172.17.0.1 3128
    
por 06.04.2016 / 08:00