2012-09-10 50 views
1

我正在Linux上使用netcat實用程序接收來自Windows計算機上的程序的輸出。我的問題是,Windows機器上的程序並不總是給出輸出。unix在Linux上的netcat實用程序,檢查是否連接

我該如何檢查是否已連接到netcat?

我到現在爲止所做的是「nc -l -v 9103 > output」然後我檢查輸出的大小,這個問題是netcat只有在達到某個緩衝區大小後才寫入文件或者遇到新的一行字符時,所以有些情況表明,雖然已經建立連接,但文件大小被檢測爲零。

我該如何檢查是否有人與netcat建立了連接。

我嘗試使用

nc -l -v -e someprog.exe 9103 > output 

但我的netcat似乎不支持低於此

是我擁有的各種選擇

$ nc -h 
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] 
      [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version] 
      [-x proxy_address[:port]] [hostname] [port[s]] 
     Command Summary: 
       -4    Use IPv4 
       -6    Use IPv6 
       -D    Enable the debug socket option 
       -d    Detach from stdin 
       -h    This help text 
       -i secs   Delay interval for lines sent, ports scanned 
       -k    Keep inbound sockets open for multiple connects 
       -l    Listen mode, for inbound connects 
       -n    Suppress name/port resolutions 
       -p port   Specify local port for remote connects 
       -r    Randomize remote ports 
       -s addr   Local source address 
       -T ToS   Set IP Type of Service 
       -C    Send CRLF as line-ending 
       -t    Answer TELNET negotiation 
       -U    Use UNIX domain socket 
       -u    UDP mode 
       -v    Verbose 
       -w secs   Timeout for connects and final net reads 
       -X proto  Proxy protocol: "4", "5" (SOCKS) or "connect" 
       -x addr[:port] Specify proxy address and port 
       -z    Zero-I/O mode [used for scanning] 
     Port numbers can be individual or ranges: lo-hi [inclusive] 

回答

1

詳細模式會寫連接到標準錯誤,你可以將stderr重定向到一個文件,詳細日誌有類似 從[xxxx]連接到[xxx]

嘗試

nc -l -v -p 9103 -k 1> output 2>connect.log 

,如果你不使用-k監視連接

connect.log,第一次連接後netcat的退出。

1

如果您可以升級您的netcat副本:現代版本(1.10)可以選擇在連接時執行程序(或shell命令)。否則,你可以使netcat認爲它運行在終端中(通過使用script(它只是將stdin/stdout/stderr中的所有內容保存在給定文件中)來禁用stdout的緩存)。或使用screentmux的日誌功能。

+0

你能詳細說明我該怎麼做嗎? – user434885

+0

哪一個?升級'netcat',使用'script','screen'或'tmux'? – fork0

相關問題