2011-06-19 33 views
1

場景: 我可以使用ssh和tail在遠程Unix機器上觀看日誌,但我無法安裝軟件。我想使用像multitail或其他遠程計算機上不可用的日誌查看器來觀察日誌文件。當然,如果我可以找到一種方法在寫入日誌時創建實時本地副本,我可以在本地機器上使用我想要的任何軟件。是否有可能/如何創建實時遠程日誌文件的本地副本以供觀看/加尾?

問題: 是否有可能爲了這個目的而重新將ssh客戶端的輸出導向到一個文件,或者有其他方法來完成這個目標嗎?

+1

OK ,可能有一個解決方案:ssh remotehost「tail -f /var/log/httpd/access.log」>> remote-httpd.log – user447607

回答

0

是的,你可以使用netcat來做到這一點。請注意,如果您沒有將其合併到鏈中,日誌文件將以未加密方式通過網絡發送,這可能會對某些日誌文件造成安全風險。

想法是,您使用netcat,它基本上像網絡上的管道一樣工作。

在保存日誌文件的機器,這樣做:

tail -f <logfile> | nc -l -p <port-number> 

2.在想要進一步處理文件的機器,這樣做:

nc <first machine> <port-number> | <your file processor, e.g. multitail> 

或者,您也可以使用'>'在目標機器上寫入文件,然後在該文件上使用multitail。 的端口號是由你來選擇,比1024

+1

或者只是'ssh remotehost tail -f/var/log/... | your | file | processor' ...爲什麼用複雜的命令在不可信的網絡上以明文形式發送日誌行,而'ssh'可以加密並且e asy? –

+0

好點。如果可能的話,我會更喜歡你的方式(應該幾乎無處不在)。 – ypnos

2

使用較大的一個16位數字的-l選項:

-l command
命令在一個窗口中執行。參數是命令。不要忘記,如果外部命令需要的參數使用「的!(如-l "ping host")。

例如

$ multitail -l 'ssh host1 tail -f log1' -l 'ssh host2 tail -f log2'

Multitail似乎並不支持bash process substitution,但是。

相關問題