Linux
Netcat 命令行問題
我正在嘗試
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 沒有正確讀取標準輸入有什麼技巧嗎?
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 上的連接,而不是等待輸出..您可以嘗試 -q 1 左右..
-q 在標準輸入 EOF 後的秒數,等待指定的秒數然後退出。如果秒數為負數,請永遠等待。
我傾向於使用如下行:
# (echo stats ; sleep 0.1) | netcat 10.251.170.80 11211
這似乎使連接保持打開足夠長的時間以得到答复。