2
我想寫一個netcat流到本地文件,但我想也實時註釋每個流條目與一些元數據(即連接的源IP),因爲我將使用多個將寫入同一文件的流。寫一個Netcat流到文件與其他文本
例如,以下(bash命令)正常工作:
nc 192.168.0.1 443 >> result.txt & echo -n "| Source: 192.168.0.1 | " >> result.txt
與上述代碼的問題是,它將只輸入元數據的第一次。因此,輸出如下所示:
Source: 192.168.0.1 | !* Connected!
X
Y
Z
我想要的結果書面這個樣子:
Source: 192.168.0.1 | !* Connected!
Source: 192.168.0.1 | X
Source: 192.168.0.1 | Y
Source: 192.168.0.1 | Z
Source: 192.168.0.2 | A #<--Written From different netcat stream
不幸的netcat完成後,我不能運行一個腳本來添加元數據文本它的工作,因爲我需要一些方法來識別正在寫入的流,因爲多個流將寫入同一個文件。主要是在bash或python中尋找解決方案。
謝謝。這幾乎是所需的解決方案。當我運行命令nc 192.168.0.1 443 |時sed's/^/Source:192.168.0.1 |/g'我完全按照我的需要看到結果(寫入stdout)。但是,當我使用>> results.txt時,它不寫入或附加到文件。我玩過重定向輸出,但仍然沒有運氣。只要我弄清楚這最後一塊,我會將其標記爲最佳答案。 – Karimi
問題是由緩衝引起的。默認情況下,如果輸出到達終端,則每條線都會立即顯示,但如果輸出到達文件,則會緩衝更大的塊(4-64kB),並且只有在緩衝區滿後才寫入文件。看到[這個問題](http://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe)也許有一個答案可以幫助你。 – Thawn
在Linux上,我找到了一個解決方案,只需將'-u'標誌添加到sed命令。我希望這有幫助。 – Thawn