場景: 我可以使用ssh和tail在遠程Unix機器上觀看日誌,但我無法安裝軟件。我想使用像multitail或其他遠程計算機上不可用的日誌查看器來觀察日誌文件。當然,如果我可以找到一種方法在寫入日誌時創建實時本地副本,我可以在本地機器上使用我想要的任何軟件。是否有可能/如何創建實時遠程日誌文件的本地副本以供觀看/加尾?
問題: 是否有可能爲了這個目的而重新將ssh客戶端的輸出導向到一個文件,或者有其他方法來完成這個目標嗎?
場景: 我可以使用ssh和tail在遠程Unix機器上觀看日誌,但我無法安裝軟件。我想使用像multitail或其他遠程計算機上不可用的日誌查看器來觀察日誌文件。當然,如果我可以找到一種方法在寫入日誌時創建實時本地副本,我可以在本地機器上使用我想要的任何軟件。是否有可能/如何創建實時遠程日誌文件的本地副本以供觀看/加尾?
問題: 是否有可能爲了這個目的而重新將ssh客戶端的輸出導向到一個文件,或者有其他方法來完成這個目標嗎?
是的,你可以使用netcat來做到這一點。請注意,如果您沒有將其合併到鏈中,日誌文件將以未加密方式通過網絡發送,這可能會對某些日誌文件造成安全風險。
想法是,您使用netcat
,它基本上像網絡上的管道一樣工作。
在保存日誌文件的機器,這樣做:
tail -f <logfile> | nc -l -p <port-number>
2.在想要進一步處理文件的機器,這樣做:
nc <first machine> <port-number> | <your file processor, e.g. multitail>
或者,您也可以使用'>'在目標機器上寫入文件,然後在該文件上使用multitail。 的端口號是由你來選擇,比1024
或者只是'ssh remotehost tail -f/var/log/... | your | file | processor' ...爲什麼用複雜的命令在不可信的網絡上以明文形式發送日誌行,而'ssh'可以加密並且e asy? –
好點。如果可能的話,我會更喜歡你的方式(應該幾乎無處不在)。 – ypnos
使用較大的一個16位數字的-l
選項:
-l command
命令在一個窗口中執行。參數是命令。不要忘記,如果外部命令需要的參數使用「的!(如-l "ping host"
)。
例如
$ multitail -l 'ssh host1 tail -f log1' -l 'ssh host2 tail -f log2'
Multitail似乎並不支持bash process substitution,但是。
OK ,可能有一個解決方案:ssh remotehost「tail -f /var/log/httpd/access.log」>> remote-httpd.log – user447607