2011-01-19 80 views
58

有沒有辦法快速綁定到TCP端口/ IP地址,只需將所有信息打印到STDOUT?我有一個簡單的調試解決方案,它將事情寫入127.0.0.1:4444,我希望能夠簡單地綁定一個來自bash的端口並打印所有遇到的問題。是否有捷徑可尋?簡單的Socket服務器在Bash中?

+0

相關http://unix.stackexchange.com/questions/49936/dev-tcp-listen-instead-of-nc-listen – 2016-09-02 22:20:09

回答

87
$ nc -k -l 4444 > filename.out 

看到nc(1)

+3

有沒有辦法做到這一點,不需要它在循環中運行,即綁定直到死亡?如果我不像這樣運行,我會重複連接和斷開連接到socket和'nc`:'while true;做nc -l 4444; done`。 – 2011-01-19 18:43:22

+2

添加`-k`選項。 – 2011-01-19 18:45:46

+0

在某些發行版中,您需要將其更改爲'nc -k -l -p 4444'。 – 2015-04-09 11:38:47

37

僅僅因爲你問如何做到這一點的bash,雖然netcat答案是非常有效的:

$ exec 3<>/dev/tcp/127.0.0.1/4444 
    $ cat <&3 
8

這是工作,你希望:

nc -k -l 4444 |bash 

然後你

echo "ls" >/dev/tcp/127.0.0.1/4444 

然後您會看到由bash執行的列表。

[略安全警告]
當然,如果你離開的事情像你的計算機上的此運行,則必須對各種攻擊大開門戶,因爲命令可以從任何用戶帳戶上的任何發送主機在您的網絡中。這不會實現任何安全性(身份驗證,身份識別),並通過網絡發送所有未加密的傳輸命令,因此很容易被濫用。

1

添加使用ncat是@Freedom_Ben提到了一個答案:

ncat -k -l 127.0.0.1 4444 

和從人NCAT選項的解釋:

-k, --keep-open   Accept multiple connections in listen mode 
-l, --listen    Bind and listen for incoming connections