Problemas com a linha de comando do Netcat

6

Estou tentando coletar estatísticas de um memcached server usando netcat .

~ $nc 10.251.170.80 11211
stats
STAT pid 27508
STAT uptime 7940345
STAT time 1262949310
STAT version 1.2.4
STAT pointer_size 64
STAT rusage_user 1389.962693
STAT rusage_system 4857.247586
STAT curr_items 9154565
STAT total_items 615722800
STAT bytes 1994844049
STAT curr_connections 62
STAT total_connections 6263004
STAT connection_structures 148
STAT cmd_get 1925983531
STAT cmd_set 615722800
STAT get_hits 1334407705
STAT get_misses 591575826
STAT evictions 7125864
STAT bytes_read 454794886199
STAT bytes_written 176758890326
STAT limit_maxbytes 2147483648
STAT threads 4
END

Eu não consigo entender por que

~ $echo stats | nc -vv 10.251.170.80 11211
Connection to 10.251.170.80 11211 port [tcp/*] succeeded!
~ $

falha apenas.

Existe algum truque com nc não lendo corretamente stdin?

Algo errado com CR / LF?

Eu tenho tentado todas as opções de linha de comando nc relacionadas à entrada (-C)

~ $echo $SHELL
/bin/bash
~ $bash --version
GNU bash, version 3.2.33(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

O sistema é o fedora 9.

    
por zuzur 08.01.2010 / 12:33

4 respostas

3

Isso funciona para mim no debian usando nc.openbsd e nc.traditional:

echo -e "stats\nquit" | nc 10.251.170.80  11211

seu netcat parece estar fechando a conexão no EOF no stdin e não está esperando pela saída. você pode tentar -q 1 ou assim ..

-q seconds after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.

    
por 08.01.2010 / 14:02
2

Eu costumo usar uma linha como a seguinte:

# (echo stats ; sleep 0.1) | netcat 10.251.170.80 11211

Isso parece manter a conexão aberta o tempo suficiente para obter a resposta.

    
por 19.04.2012 / 13:15
0

Nenhuma nova linha está sendo enviada?

Que tal tentar:     ~ $ echo -e 'stats \ n' | nc -vv 10.251.170.80 11211

Espero que isso ajude.

    
por 08.01.2010 / 13:07
0

Eu tive o mesmo problema com o comando . A única solução de sono @ d5ve funciona para mim:

(echo status; sleep 0.1) | nc -w1 locahost 4730
    
por 17.04.2017 / 15:57