
我使用此命令來偵聽連接埠並將資料轉儲到檔案:
while : ; do nc -l 0.0.0.0 10000 > log.txt & done
第一個請求工作完美,它被轉儲到 log.txt 中,但在第一個請求之後,nc 不再偵聽而是停止。
有人可以指出我做錯了什麼嗎?
我只是希望它在後台連續運行並將來自該端口的任何請求記錄到 log.txt 文件...
答案1
您必須新增一個選項數控。此選項取決於版本數控你在跑步。例如,就我而言(Kubuntu),選項是-k。從手冊頁來看,
-k 強制 nc 在目前連線完成後繼續偵聽另一個連線。使用此選項而不使用 -l 選項是錯誤的。
我無法保證-k有效(當然,除非你使用的是 Ubuntu),你將不得不搜尋類似的東西。例如,在我的 Debian 上,-k不存在,但你發現:
-q 秒 在 stdin 上的 EOF 後,等待指定的秒數,然後退出。如果秒為負數,則永遠等待
編輯:
要檢查它是否有效,請在一台電腦上:
nc -k -l 0.0.0.0 10000 > out.txt
在第二台電腦上:
echo Hello | nc IP_address_of_first_pc 10000
多次發出上述命令,然後中斷數控pc1 上的指令,檢查 out.txt 中的行數。