筆者身邊有個經常查詢事件日誌的Linux Trace機,鑒於查看日誌的使用頻率較高,筆者想著做個可視化終端來幫助定位查找,提高效率。在命令行中查找日誌的過程是:1、當天(24小時內)的日誌直接讀取日誌文件,使用專用工具讀取;2、超過24小時的日誌需要到相應的日期目錄下,根據時間定位到壓縮後的日誌,解壓縮.gz文件,解壓縮後就是文本文件,可使用vi編輯器。
可視化查找工具的目的就是要遠程到Trace機,根據給定的日期和時間選擇對應的日誌,輸出到可視化界面上,然後運維人員可以根據關鍵字定位到日誌具體信息,或者更深一步,根據日誌直接輸出問題。
平時的積累太重要了,這個方案筆者邊寫這篇文章邊思考,基本沒有遇到上面不可解決的大問問題,有些問題筆者以前的文章都測試過。想到做這個工具,筆者心有成竹,都有一套解決方案,可能花時間的還是一些小問題。
筆者選擇LabVIEW作為開發平台,PLINK作為遠程連接工具。下面幾個問題概括了筆者的一點思路,和大家分享一下。
1、 LabVIEW怎麼SSH遠程到Trace機
這個問題筆者以前做過,可以參考文化中-LabVIEW通過PLINK遠程到Linux系統,或者願意花錢的話選擇 ALAB SSH工具,參考文章-LabVIEW遠程SSH到Linux系統。在這里就不在贅述了。
2、怎麼將日誌輸出到 LabVIEW的字元串顯示控制項裡面
當天(24小時內)的日誌直接使用專用工具讀取輸出到字元串中,壓縮.gz文件怎麼處理呢?筆者這里想了四個大同小異的方法:1、gunzip filename.gz,解壓文件,然後cat filename,gunzip直接解壓是不保留源文件的;2、gunzip –c filename.gz ,可以解壓縮並保留源文件,文件的內容直接輸出,沒有生成解壓後文件,這樣可以省去cat指令來查看文件;3、gunzip -cv filename.gz > filename ,可以保留源文件和壓縮後文件,然後使用cat filename;4、zcat filename.gz 不解壓文件可以直接查看文件內容。筆者使用第四種方法。
那麼問題來了,.gz文件要是被人已經解壓了,只有解壓後的filename?那麼可以使用或 命令|| ,邏輯或,當用此連接符連接多個命令時,前面的命令執行成功,則後面的命令不會執行,前面的命令執行失敗,後面的命令才會執行。請看筆者在kali linux中的測試。關於兩個命令的邏輯關系的連接符,請參考文章-Linux 多個SHELL命令怎麼順序執行。
結合上面的兩個部分,筆者來使用labview來測試一下。關於plink中文為啥亂碼的問題待回頭解決吧,不過Trace機裡面也沒有中文。命令||的第一條命令沒有執行成功,錯誤信息也沒有顯示出來,很不錯!
3、日誌輸出到字元串控制項,怎麼關鍵字檢索
使用搜索拆分字元串函數,然後將檢索的字元串改變顏色高亮顯示。筆者做了個簡單的例子,但是針對有上萬行的來說,這個檢索例子需要優化,需要添加事件結構,通過按鈕定位到關鍵字,然後NEXT按鈕一步步檢索到關鍵字。這個待筆者這幾天把他做出來,先把思路放在這里。
還有針對日誌,需要分析日誌結構,通過全日誌的分析提煉出問題所在,比如沒有哪個類型的報文等等,可以做得智能化一點,提供給運維人員簡單實用的提醒信息。
或者做的更加主動一點,定時分析新的日誌,得到一些有用的信息。
測試前面板:
測試程序框圖:
4、給定日期和時間,怎麼定位到日誌文件
日期好說,根據給定的日期信息,按照日期格式進入到對應的目錄。時間就沒有那麼方便了,日誌是隔段時間生成一個文件,給定時間後,要根據日誌文件的時間來精確定位到目的文件。
進入到相應日期的目錄,找到輸出所有文件名,將給定的時間按照格式命令,找到這個時間范圍的文件。筆者想到兩個方法:1、labview遠程到相應日期的目錄,使用」ls -l「指令輸出所有文件名,所有文件的時間字元串有了,給定的時間字元串有了,那麼就是字元串操作的問題了;2、在 Trace上寫個shell腳本,根據$1給定的時間參數,查找並輸出對應的日誌文件的名稱,然後labview遠程遠程調用這個腳本得到文件名。
這兩種方法待筆者更新文章再補充,其實也不難,就是要花時間測試。
5、不僅僅做日誌分析,可以添加維護功能
比如筆者以前寫的遠程保存交換機配置文件,參考文章-關於交換機保存配置的一點思考,比如指令:PLINK -pw password [email protected] -ssh -batch "di cu"> switch%date:~,4%%date:~5,2%%date:~8,2%.txt 就可以將華為交換機的配置文件保存到本地。
還可以將使用PuTTY 提供的文件傳輸工具PSCP (PuTTY Secure Copy client)或者PSFTP工具來遠程拷貝Linux程序的配置文件。PSCP和PLINK類似,在exe的目錄下運行pscp可以查看其參數說明。
測試結果如下,那麼從Linux伺服器拷貝配置文件就方便了。
設計思路大概如此,筆者做出來的話,不趕工的話一個星期可以調試好。裡面有些細節需要優化,筆者覺得labview抑或你使用的其他開發平台,和shell基本結合來完成可能會更加方便和高效。筆者覺得最大難點在於做一個優雅的界面,現在是看臉的時代,要長得好看,還有就是日誌分析上面,日誌生成過程需要慢慢理清才能根據日誌得到准確的解讀。
㈡ svn常用命令詳解
一、 SVN常用命令
1、將文件checkout到本地目錄
svn checkout path(path是伺服器上的目錄)
簡寫:svn co
2、往版本庫中添加新的文件
svn add file
3、將改動的文件提交到版本庫
svn commit -m 「LogMessage」 [-N] [--no-unlock] PATH(如果選擇了保持鎖,就使用–no-unlock開關)
簡寫:svn ci
4、加鎖/解鎖
svn lock -m 「LockMessage」 [--force] PATH
svn unlock PATH
5、更新到某個版本
svn update -r m path
簡寫:svn up
6、查看文件或者目錄狀態
1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)
2)svn status -v path(顯示文件和子目錄狀態)
簡寫:svn st
7、刪除文件
svn delete path -m 「delete test fle」
簡寫:svn (del, remove, rm)
8、查看日誌
svn log path
9、查看文件詳細信息
svn info path
10、比較差異
svn diff path(將修改的文件與基礎版本比較)
svn diff -r m:n path(對版本m和版本n比較差異)
簡寫:svn di
11、將兩個版本之間的差異合並到當前文件
svn merge -r m:n path
12、SVN 幫助
svn help
svn help ci
㈢ 請教SVN伺服器的問題
你看到只是最初的版本·你下載下來的時候·伺服器會把最新的更新下來的。每更新一次,都有一個不同的版本號,當你操作失誤時,可以在伺服器上根據上次提交的版本號給下載下來。