Linux

Netcat 命令行問題

  • April 17, 2017

我正在嘗試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

這似乎使連接保持打開足夠長的時間以得到答复。

引用自:https://serverfault.com/questions/100808