笔者身边有个经常查询事件日志的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服务器的问题
你看到只是最初的版本·你下载下来的时候·服务器会把最新的更新下来的。每更新一次,都有一个不同的版本号,当你操作失误时,可以在服务器上根据上次提交的版本号给下载下来。