Shell小工具, 这些工具极大的提高了我的工作效率

Shell小工具


    下面列出的Shell小工具都是这些年工作中写些的,写这些脚本的惟一目的就是提高工作效率.事实证明,这些脚本对我的工作效率有了很大的提高,而且这些脚本有些我已经推广给项目组或者其他人使用.这些脚本并不是我的工作内容,写这些脚本的出发点有两条:

1.能大幅度提高我的工作效率

2.好玩


目录:

  1. Proc文件纠错脚本:errorcheck

  2. 搭建isoa测试环境脚本:tes

  3. Linux下支持回收的删除命令trash

  4. ReportQA脚本:CheckLiks.sh, CheckOther.sh, CheckSelf.sh

  5. ReportQA小系统:ReportQA

  6. 追女朋友时候用工具girlLove

  7. 基于终端的日志工具logview

  8. 部署测试环境脚本:deploy

  9. Xenxm命令自动补全脚本:xm-completion

  10. 检测系统环境或者测试环境的脚本:check

  11. 封装应用程序的脚本:AppRemember.sh

  12. C写的翻译小工具tsl(哈哈,也放这里算了)



基于终端的日志工具logview

.功能简介

  • 脚本所采用的算法非常适合用来监视大型日志文件

  • 将所监视出的错误信息发送给指定的邮件列表

  • 可以设置监视频率,比如30s/1h扫描一次日志文件

  • 将错误信息发送到指定的tty,达到出现错误立即知晓的目的

  • 自动指定脚本从何时开始监视日志文件,以及何时结束监视

  • 自由指定错误发生时,脚本所要执行的操作,比如kill掉产生日志文件的进程等.

  • 给错误信息配色

  • 日志文件分析及生成日志报告的功能

  • 可以自由指定所要监控的报错信息

  • 只要你有bash以及mail命令即可运行此工具


.使用方法

  1. $git clone https://github.com/alex8866/logview

  2. $cd logview

  3. 复制logview文件到你的$PATH路径中

  1. 获取awk文件,脚本用该文件过滤错误信息,如果仅想过滤带error/failed的行,你可以执行:

   $logview -a

   该命令会在当前目录生成名为awk.example的文件,你可以在该文件的基础上进行修改


  1. logview -h

    通过该工具的帮助信息获取更多帮助

  1. 举例:

     1.$logview awk.example -f logfile

    该命令会每隔3s扫描一次日志文件,并将包含error或者failed单词的行输  出到标准输出.


     2.$logview awk.example -f logfile --font-color=red --font=bold -s 5s -c ./command.sh -mlkong@redhat.com --mail-time=5m
     参数解释:

    -f:指定你所要监视的日志文件

     --font-color=red:将错误信息以红色字体打印

     --font=bold:字体格式为bold

     -s5s:每隔5s扫描一次日志文件
     -m:将错误信息发送给 -m参数后的maillist

     --mail-time=5m:每隔5分钟发送一次email


    3.$logview awk.example -f logfile --font-color=red --font=bold -s 5s -c ./command.sh -m lkong@redhat.com --mail-time=5m errorfile.txt --notice=one

    参数解释:

    --notice=one:当有错误信息时,logview会将错误信息发送到你当前的tty

    --notice=all:当有错误信息时,logview会将错误信息发送到你所有的tty




. 其他说明

    其实该脚本的功能远不止这些,至于其他功能你可以参考logview -h并结合脚本源码获知其用法.

该脚本很适合高频率的监视大型日志文件,假若刚启动监视脚本时是日志文件总共有10000,设置监频率为3s,那么假设在这3s内日志文件新心曾800,则该脚本查找错误字符串范围为10000-10800而不是0-10800,试想假若所监视的日志文件是个大型的日志文件,超过10W,而且要不停听的监测,那么该脚本会节省很多资源和时间.而且脚本中的一些实现方法也值得学习和借鉴.该工具已经被oschina收录.

    当你将错误信息输出到标准输出而非文件时是,notice功能会自动被禁止掉,即使你指定了--notice参数.



Linux下支持回收的删除命令trash

l        在linux系统下经常会因为一些原因而错删文件,也许有些文件删了没什么影响,但有些文件删除了就会酿成重大的损失,有时候我们很期待在linux系统下能有一个类似windows回首站的功能,shell工具实现了windows回收站的基本功能,用法也很简单,linux自带的rm命令用法几乎没有任何区别.使用时只需将该脚本拷贝到$PATH目录下即可. 

 

y 一. 功能简介

  • 将删除的文件放在回收站中

  • 恢复删除的文件

  • 实现linux rm命令的功能,使用起来几乎和linux系统自带的rm,命令完全一样

  • 新增功能:rm -l, rm -e, rm -c

  • 该脚本每次在运行时候会检查$HOME/.trash目录下文件大小之和,
    超过最大容量,脚本会自动将日志文件中所记录文件中的前一半文件从回
    收站中清除,所以建议删除大文件(相对于回收站最大容量而言)直接用
    命令/bin/rm而不要用
    rm.

.使用方法

  1. $git clone https://github.com/alex8866/trash

  2. $cd trash

  3. 复制trash命令到你的$PATH

  4. $HOME/.bashrc文件中加入aliasrm=”$HOME/bin/trash”,重新登陆终端或执行bash命令。

  5. 配置回收站最大的存储空间(字节)

  打开trash脚本,修改maxmemory变量的值:



  1. 回收站的默认目录为:$HOME/.trash,默认配置文件为:$HOME/.trash/trash.conf,默认log文件为:$HOME/.trash/trash.log

  2. 怎样恢复文件:

  linux终端中输入rm -l, 然后 在RowNumber:后面键入要删除文件所在的行标识:988键入y/Y然后按回车键 恢复成功.

如果想只查看删除列表,则键入rm -l 后直接按回车键或者键入Q/q

更详细的参数介绍请键入:rm--help



. 其他说明

    1. 想要手动清空$HOME/.trash目录需要用/bin/rm命令,请不要尝试用rm -r $HOME/.trash 的方法.

    2. 该脚本不支持rm -r -f , rm -rfi (选项组合超过2)格式.

    3. 如果你可以你甚至可以用该脚本作为备份脚本,假若想备份test2.txt你只需要执行rmtest2.txt, 当然如果真想备份某个文件的话,最好编>写专门的备份脚本。

    4. 其实我有一种想法,就是如果能在linux coreutils包中的rm.c文件的基础上加以修改,当删除时记录其i节点信息,并将所删除的存储空间保护起来,那么在下次恢复文件时是,只之需要在文件系统中加入该i节点即可.


.使用截图





追女朋友时候用工具girlLove


   搞计算机的男生是最容易在女孩子面前耍酷的,尤其是从事linux系统下的开发,因为当你打开自己配置的漂亮的终端时,如果一不小心被女孩子看到,那么你在她心里就酷了一次.如果你能专门为自己心仪的女孩子写一个求爱程序,那么你在她心里就更酷了,这样也能大大增加你的成功几率,所以想找女朋友的IT朋友可以试试该脚本.


. 功能简介

   对女孩子来说你有这个心就不错了,所以不要认为脚本简单就觉得礼物不好,对苦逼程序员来说,code是我们最大的财富,so,为什么不弄点code去找对象呢.其实,该脚本还可以调用HTML网页,写个简单的html文件,然后在脚本中调用也许效果更不错哦。大家可以在girlLove.sh文件中加入任何你想设置的问题及答案,当然如果是我,答案我当然会定死的.使用该脚本前,你要先读懂该脚本.

    该脚本其实就是一个答题系统,答对了才能往下进行.


. 使用方法

  1. $git clone https://github.com/alex8866/girlLove.git

  2. $cd girlLove $gfname

  3. $./girlLove.sh gfname


.其他说明

   该脚本答题进度是根据girlLove.txt文件中的poetry变量的行数来进行计算的,所以poetry有几行,你就应该设置几个问题,为了保持一致.当然你觉得问题太少了,你可以在poetry中添加N个问题,question, bakans, answer, tips你也要进行设置.


. 使用截图




ReportQA小系统: ReportQA

. 功能简介

  1. 该脚本可以检测报告,检测报告的格式在可遇见的未来都可以检测。

  2. 报告检测基本分为2大类, a.自身检测b.和其他报告的对比检测

  3. 脚本在检测前你需要进行配置,任何报告的自身检测,以及任何报告和任何报告的对比检测,以及检测的内容和筛选条件,都可以在此进行配置,在配置文本中所指定的筛选条件是按awk语法来填写的,比如你想要A报告中的第3fieldB报告中的第四个field想等,那么 你需要这么写:

        $3==$4而不是$3=$4

  1. 该脚本所在的.ReportQA目录,必须放在$HOME下,因为脚本中的变量已经写死了,而且脚本中用到的路径也是从$HOME/.ReportQA目录开始的相对路径。

  2. 在检测脚本时,你需要进入$HOME/.ReportQA目录下进行操作。

  3. 该脚本基本上包含了shell脚本中常用的知识和技巧。


. 使用方法(假设要对比WFPrepaymentArm/fharm.txtWFServicerArm/fh.txt2个报告。自身和2者之间的对比)

    使用时基本分为2步操作:

    A.生成筛选规则

    B.进行对比

      1. cd$HOME; tar -xvzf ~/ReportQA.tar.gz; cd .ReportQA;cp -r~/WFPrepaymentArm .; cp -r ~/WFServicerArm .

          下面先进行WFPrepaymentArm/fharm.txt的自身检测

      1. 创建筛选条件文本:test

           内容如下:



           BTW:里面的筛选条件可以随便指定(没有指定的field该脚本不做检测),所指定的条件是需要满足的条件,若满足该条件,则脚本会输出出现错误的行 以及对应的筛选条件。

      1. 执行命令:

           ./RulesMake.sh WFPrepaymentArm/fharm.txt test >TEST

           TEST中内容为:



           若想顺便生成WFServicerArm/fh.txt报告的检测脚本, 只需执行命令:

           ./RulesMake.sh WFServicerArm/fh.txt test2 >> TEST

           此时TEST内容为:


      1. 检测规则已经生成,接下来便可以进行检测了, 检测时候的命令为:

           ./CheckReprot.sh WFPrepaymentArm TEST

           WFPrepaymentArm文件夹下有很多文件假若有       fharm.txtg2arm.txt fnarm.txt,该脚本会对所有文件一一进行扫描,若在TEST中搜到和其对应的检测规则,则进行检测,否则只报警。所以此时只会对WFPrepaymentArm/fharm.txt进行检测。

           对WFPrepaymentArm/fharm.txt的检测结果为:



           第一个#####前面内容为符合筛选条件的行,2#####中间的内容为出错的文件,最后一个#####之后的内容为符合的筛选条件


两个报告之间的对比(WFServicerArm/fh.txtWFPrepaymentArm/fharm.txt之间进行对比)

      1. 生成检测规则,建立规则文本ct, 执行命令:

           ./RulesMake.sh WFPrepaymentArm/fharm.txt WFServicerArm/fh.txt ct > CT

           文件ct内容为:



           假若./RulesMake.sh WFPrepaymentArm/fharm.txt WFServicerArm/fh.txt ct > CT命令中第1个参数所指定的文件的第1field和第2个参数所指定的文件的第1field相等,第1个参数所指定的文件的第2field和第1个参数所指定的文件的第2field相等,且第 2个参数所指定文件中的第3field值应为All,则这2行数据可以进行对比,那么你应该这样来书写:

key:f$1=s$1,f$2=s$2,s$3="All"

           (Notef$1:代表第1个参数所指定文件中的第1field. s$2: 代表第2个参数所指定文件中的第2field

           f$2==s$2+10:这行指定符合条件的2个数据所应满足的条件,若满足则按顺序合并这2行,并打印。

如果$1是里面含有%,那么你在指定规则时不应该是这样:$1>22%而应该是$1>22


           CT内容如下:


           同样你也可以继续生成其他对比文件的对比规则,只需执行命令:

           ./RulesMake.sh WFPrepaymentArm/fnarm.txt WFServicerArm/fn.txt ct >> CT


           5.执行命令:./CheckReport.sh WFPrepaymentArm  WFServicerArm CT进行对比

           对比结果为:



           第一个#####前面内容为符合筛选条件的行,2#####中间的内容为出错的文件,最后一个#####之后的内容为符合的筛选条件




ReportQA脚本:CheckLiks.sh, CheckOther.sh, CheckSelf.sh

()




部署测试环境脚本:deploy


Featuresof deploy

  • Deployyour own configure file or environment to the target host

  • Workwith check tool to do some validation work

  • Undeployyour work environment on the target host

  • Auto addyour ssh public key to the target host


Howto use this tool


1. Install it

$git clonehttps://github.com/alex8866/deploy

$cd deploy

$./deploy install


2. Configure your owntest environment via specify values to variables.

$deploy -e

Note: you canunderstand the meaning of configuration items by the variable's name.

Here is anexample configuration:

----------------------------------------------------------------------------------------------------

#The name of thetester, name should not include special character,

tester=lkong

 

#The targethost's ip address, note: the ip address should be separated by blankspace.

#In fact, thisfile will be source in script file: deploy. and 'ip' is a arrayvariable

#in 'deploy'

ip=(11.11.11.11 22.22.22.22)


#the targethost's password, the default is 'redhat'

password=******


#Specify the hostenvironment, these variable name should be lower case letters, andshould

#be separated by'_'

#you can get hostkernel version by 'uname -r'

host_kernel_version=2.6.22-2222.el5xen


host_release=5.10


#x86_63/i386/i686

host_arch=x86_64

#amd/intel

cpu_type=amd


#Guestenvironment

guest_kernel=3.3

guest_version=2.2

guest_bit=64

guest_type=pv


#Xen version

xen_version=3.2.2-999.el5

----------------------------------------------------------------------------------------------------


3. Deploy yourenvironment to the target hosts.

When you executethis command, It will deploy your environment to the target host. Italso generate a command 'tsh' for you. Assume you have deployed yourenvironment to two host. Then you can use 'tsh -a' to login the firsthost, 'tsh -b' to login the second host. You will naturally inferthat you can use 'tsh -c' to login the third host, you are right. Anddeploy also change the PS1 to [host-a], [host-b] according to 'tsh-a', 'tsh -b', this will help you to realize which host you are in.(assume tester=lkong)

 

Also, thiscommand will generate a useable  xen configure file according toyour configure in step 2. It is placed in $target_host_ip:~/$tester/,and the naming rules is:  

$guest_type-$guest_version-$guest-bit-1.cfg,If you want to create this xen guest just:

$tsh -a

#cd lkong

#cp/vol/s1xenimage/RHEL-Server-6.5-64-pv.raw    /var/lib/xen/images   

/$guest_type-$guest_version-$guest-bit-1.img

#xm create$guest_type-$guest_version-$guest-bit-1.cfg


4. Undeloy yourenvironment from the host which you have deployed your environment.

    #deploy -u

    With thiscommand, you can completely restore the environment on the targethost. "completely restore" means the target host will be ina environment as seems as you have not execute 'deploy -d'


Whereto put your configure files?

[deploy]$ls

bin CheckKey.shconf deploy deploy.bak future README testenv.ini testenv.ini~testfile

bin: Thisdirectory used to put your own command. If you have a executeablefile, put it here, then you will used it on the target host

conf: put your.bashrc .emacs .profile .vimrc in this directory.

testfile: Thisdirectory contains the files related to test (xen and libguestfs)

--------------------------------------------------------------------

[deploy]$ls testfile/

hvm-example.cfg pv-example.cfg virsh-kvm.xml

--------------------------------------------------------------------


Otherfunctions with deploy

    1. use `deploy-h` to get more details



    2. deploy -o$new_host_ip: Assume you have deployed your environment to two hosts,execute this command will add 'tsh -c' to command 'tsh' for$new_host_ip.

    3. If you testxen or libguestfs project, you can add 'logview' command to script'deploy' to let logview automatic monitor the log files related toxen or libguestfs, and send "error" messages to yourcurrent tty.

 



封装应用程序的脚本:AppRemember.sh

. 功能简介

	该脚本实现的功能其实很简单, 就是在应用程序的命令之外作了一层包装. 包装后的命令能记录你用该命令所打开的文件, 还有个类似收藏夹的功能吧, 方便你打开最经常使用的文档. 


. 使用方法

  怎样安装?

  1. $gitclonehttps://github.com/alex8866/AppRemember.git

  2. $cdAppRemember

  3. $cpAppRemember.sh $HOME/bin

  4. $cpAppRemember.conf $HOME/bin

  5. $cd$HOME/bin

  6. AppRemember.conf进行配置, 具体该怎么配置, 请阅读 '怎样使用?'
  7. $./AppRemember.sh

   怎样使用?

	假若你打开PDF文件的命令行工具为:okular, 你对该工具有如下配置:
	<AppName>
 	   Name=okular
 	   MapName=ok
 	   LogPath=/home/aaron/bin/need-save/okular.txt
  	  ShowOpen=/home/aaron/Read/[C程序设计(第四版)].谭浩强.扫描	.pdf;/home/aaron/Documents/Class/c-c++/C和指针.pdf
	</AppName>

        那么执行AppRemeber.sh后会生成新的命令:ok

	执行:
	$ok filename
	则会打开名为filenamePDF文档, ok脚本会将该文档的绝对路径加入到文	:/home/aaron/bin/need-save/okular.txt.
	执行:
	$ok -l 
	则会列出你所有打开过的文件, 选择你需要再次打开文件的编号->回车, 则会再次打开该文件.

	ShowOpen 所列出的文件, 会放在你执行ok -l列出列表的最前面, 这些文件一般是你最经常打开的文	, 这样设计是让你能更方便的打开最经常使用的文件.


. 使用截图






Proc文件纠错脚本:errorcheck


. 功能简介

  • C源文件全角半角检查

  • 检查源元文件中所有游标是否都已经释放

  • 检测文件结束是否断开数据库

  • 检测自己开辟的内存是否完全释放

  • 锦上添花功能:检测时会有个进度条


. 使用方法

  1. $git clone https://github.com/alex8866/errorcheck.git

  2. $cd errorcheck

  3. edit errorcheck file, set srcpath=/usr/isoa/ISOA.src/FinancialManage

  4. cp errorcheck to your $PATH


. 使用截图






搭建isoa测试环境脚本:tes


. 功能简介

      1. 该脚本配合logview命令效果很好

      2. 该脚本主要用来快速建立测试环境

      3. 运行该脚本后会自动生成完整的源文件,并在当前目录下生成所需的Makefile文件和输入数据文件(默认为data.txt)


. 使用方法

  1. 设置配置文件(logview.confmk.conf)存放目录

编辑tes文件,设置confpath=$HOME/etc

  1. cptes文件到$PATH

  2. 执行:tes BudgetModel.selectBudgetYear.pc.执行该命令后,目录内容为:


      BudgetModel.selectBudgetYear.pc 生成的完整的源文件

    data.txt 程序读取数据的文件(注意:当程序出现段错误时候,因为logview暂时不监测段错误类型,

    所以error.log没有改文件的相关记录,这样就会在当前目录下生成一个data.txt空文件)

    LINK BudgetModel.selectBudgetYear.pc的软连接,主要是为了viLINK方便,这样就不用从一堆文件中选择所需要的文件,方便快捷.

    makefile 生成的Makefile文件,直接执行make便可生成可执行文件:selectBudgetYear

    run可执行文件selectBudgetYear的软连接,这样直接./run便可以运行程序,方便快捷,你懂的


     在命令行执行make命令后目录中文件列表为:




Xen xm命令自动补全脚本: xm-completion


. 功能简介

    该脚本用来实现xen的命令行管理工具xm的自动补全功能


. 使用方法

  1. $git clone https://github.com/alex8866/xm-completion.git

  2. xm-completion/xm-completion文件追加到$HOME/.bashrc

  3. 重新登陆bash

  4. 关闭自动补全功能:$ XENXM=off

  5. 开启自动补全功能:$ XENXM=on




检测系统环境或者测试环境的脚本: check


. 功能简介

   该脚本用来检测系统的软硬件环境,而且你可以轻松的修改改该脚本,达到检测其他环境的目的


. 使用方法

  1. $git clone https://github.com/alex8866/check.git

  2. $cd check

  3. $cp check $PATH

  4. $check system



. 其他说明
    我自己根据自己的工作需要,定制了xen,guestfs选项.

    Eg:

    $check xen

   $check guestfs


     该脚本最大的特点是能动态处理打印格式,最终打印出一个规整的表格.



C写的翻译小工具tsl

. 功能简介

    将english翻译成chinese


. 使用方法

  1. $git clonehttps://github.com/alex8866/tsl.git

  2. $cd tsl

  3. $make

  4. $make install

  5. 卸载:$make uninstall

  6. 具体怎么使用:$man tsl


. 其他说明

   推荐使用方法:

    Youcan bind tsl to a global key, such as Alt + B, then select a wordfrom website, text file or any other thing, press Alt + B, thenthe tsl tool will translate it in the backend and record it to$HOME/.wordlist.txt. Also, it will replace the clipboard with thetranslate result, so you can ctrl + v or ctrl+shift+v to see theresult.


. 使用截图




 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值