Я пытаюсь собрать статистику с memcached
сервер, использующий 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
Я не могу понять почему
~ $echo stats | nc -vv 10.251.170.80 11211
Connection to 10.251.170.80 11211 port [tcp/*] succeeded!
~ $
просто не получается.
Есть ли трюк с nc, неправильно читающим stdin?
Что-то не так с CR / LF?
Я пробовал все параметры командной строки nc, связанные с вводом (-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.
Система Fedora 9.
У меня это работает на debian, используя как nc.openbsd, так и nc.traditional:
echo -e "stats\nquit" | nc 10.251.170.80 11211
ваш netcat, похоже, закрывает соединение на EOF на stdin и не ждет вывода .. вы можете попробовать -q 1 или около того ..
-q секунд после EOF на стандартном вводе, подождать указанное количество секунд и затем выйти. Если секунды отрицательны, ждать вечно.
Я обычно использую следующую строку:
# (echo stats ; sleep 0.1) | netcat 10.251.170.80 11211
Кажется, что это удерживает соединение открытым достаточно долго, чтобы получить ответ.
Новая строка не отправляется?
А как насчет попытки: ~ $ echo -e 'stats \ n' | NC -vv 10.251.170.80 11211
Надеюсь это поможет.
У меня такая же проблема с передача. У меня работает единственное решение для сна @ d5ve:
(echo status; sleep 0.1) | nc -w1 locahost 4730