LoveUnix » AIX -IBM UNIX » 系统巡检,shell部分。
让LU留住您的每

一天 让LU博客留住您的每一天
2004-7-6 23:31 flying
#&#33;/bin/ksh<br />################################################<br />#程式名称        monitor_dailyreport.sh<br />#程式类别  Unix shell program        <br />#日期格式  YYYY/MM/DD 西元纪元<br />#作业描述        为这台主机出一份dailycheck report<br />#                        <br />#<br />#程式版本        V1.0 2004/06/18<br />#原始执笔        xfang<br />#修改者           <br />################################################################################<br />###### 变数清单<br />######<br />######<br /><br />################################################################<br />servername=`hostname`<br />mntdt=`date +&quot;20%y-%m-%d %H:%M&quot;`<br />syserrdate=`date +&quot;%m%d&quot;`<br />mqerrdt=`date +&quot;%m/%d/%y&quot;`<br />filenamedt=`date +&quot;20%y%m%d&quot;`<br />errcount=0<br />mntdir=/home/root/monitor<br />ftpdir=/home/root/ftpfile<br />tmpdir=/tmp/mnt<br />mqerrdir=/var/mqm/errors<br /><br />echo &quot;report system error&quot;<br />####report system error<br />####判断今天有没有新的error及其个数<br />errdate=`errpt |grep -v IDENTIFIER |awk &#39;{print $2}&#39; |cut -c 1-4 |xargs`<br />for syserrFor1 in $errdate<br /><br />do<br />  if [ &quot;$syserrFor1&quot; = &quot;$syserrdate&quot; ]<br />    then<br />        newerrcount=`expr $errcount + 1`<br />        errcount=$newerrcount<br />  fi     <br />done<br />echo &quot;$servername\tsystem error report\t$mntdt\t$errcount&quot; &gt;&gt; $mntdir/errsql_$filenamedt.txt<br />echo &quot;$servername\tsystem error report\t$mntdt\t$errcount&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report active virtual papgs&quot;<br />####report active virtual papgs<br />###从vmstat输出信息中抓出,活动页面数<br />vmstat 1 10 |sed &#39;1,12d&#39; &gt; $tmpdir/vmdata.txt<br />avp=`cat $tmpdir/vmdata.txt |awk &#39;{print $3}&#39;` <br />echo &quot;$servername\tactive virtual pages\t$mntdt\t$avp&quot; &gt;&gt; $mntdir/avmsql_$filenamedt.txt<br />echo &quot;$servername\tactive virtual pages\t$mntdt\t$avp&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report size of the free list&quot;<br />####report size of the free list<br />###从vmstat输出信息中抓出,空闲页面数<br />slf=`cat $tmpdir/vmdata.txt |awk &#39;{print $4}&#39;`<br />echo &quot;$servername\tsize of the free list\t$mntdt\t$slf&quot; &gt;&gt; $mntdir/fresql_$filenamedt.txt<br />echo &quot;$servername\tsize of the free list\t$mntdt\t$slf&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report paged in from paging space&quot;<br />####report paged in from paging space<br />###从vmstat输出信息中抓出,paged in页面数<br />pspi=`cat $tmpdir/vmdata.txt |awk &#39;{print $6}&#39;` <br />echo &quot;$servername\tpaged in from paging space\t$mntdt\t$pspi&quot; &gt;&gt; $mntdir/pisql_$filenamedt.txt<br />echo &quot;$servername\tpaged in from paging space\t$mntdt\t$pspi&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report paged out from paging space&quot;<br />####report paged out from paging space<br />###vmstat输出信息中抓出,paged out页面数<br />pspo=`cat $tmpdir/vmdata.txt |awk &#39;{print $7}&#39;`<br />echo &quot;$servername\tpaged out from paging space\t$mntdt\t$pspo&quot; &gt;&gt; $mntdir/posql_$filenamedt.txt<br />echo &quot;$servername\tpaged out from paging space\t$mntdt\t$pspo&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report network error number&quot;<br />####report network error number<br />###从netstat -in输出信息中,抓取network error number<br />netstat -in |grep -v Name |sed &#39;5,$d&#39; &gt; $tmpdir/netstat.txt<br />awk &#39;{err=($6 + $8 &gt; 0) ? $6 + $8:0; print err}&#39; $tmpdir/netstat.txt |xargs &gt; $tmpdir/nerr.txt<br />nen=`awk &#39;{$1 += $2; $1 += $3; $1 += $4; $1 += $5; $1 += $6; print $1}&#39; $tmpdir/nerr.txt` <br />echo &quot;$servername\tnetwork error number\t$mntdt\t$nen&quot; &gt;&gt; $mntdir/Tnerrsql_$filenamedt.txt<br />echo &quot;$servername\tnetwork error number\t$mntdt\t$nen&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report network collisions number&quot;<br />####report network collisions number<br />###从netstat -in输出信息中,抓取network collisions number<br />awk &#39;{print $9}&#39; $tmpdir/netstat.txt |xargs &gt; $tmpdir/ncoll.txt<br />cln=`awk &#39;{$1 += $2; $1 += $3; $1 += $4; $1 += $5; $1 += $6; print $1}&#39; $tmpdir/ncoll.txt` <br />echo &quot;$servername\tcollisions number\t$mntdt\t$cln&quot; &gt;&gt; $mntdir/ncollsql_$filenamedt.txt<br />echo &quot;$servername\tcollisions number\t$mntdt\t$cln&quot; &gt;&gt; $ftpdir/dailycheck.txt<br />netstat -Zi<br /><br />echo &quot;report cpu executing at the user level&quot;<br />####report cpu executing at the user level<br />###从sar指令中,抓取cpu usr%<br />cpuu=`sar |grep Average |awk &#39;{print $2}&#39;` <br />echo &quot;$servername\tcpu executing at the user level\t$mntdt\t$cpuu&quot; &gt;&gt; $mntdir/cusersql_$filenamedt.txt<br />echo &quot;$servername\tcpu executing at the user level\t$mntdt\t$cpuu&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report cpu executing at the system level&quot;<br />####report cpu executing at the system level<br />###从sar指令中,抓取cpu sys%<br />cpus=`sar |grep Average |awk &#39;{print $3}&#39;` <br />echo &quot;$servername\tcpu executing at the system level\t$mntdt\t$cpus&quot; &gt;&gt; $mntdir/csyssql_$filenamedt.txt<br />echo &quot;$servername\tcpu executing at the system level\t$mntdt\t$cpus&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report cpu idle&quot;<br />#####report cpu idle<br />###从sar指令中,抓取cpu idle<br />cpui=`sar |grep Average |awk &#39;{print $5}&#39;` <br />echo &quot;$servername\tcpu idle\t$mntdt\t$cpui&quot; &gt;&gt; $mntdir/cidlesql_$filenamedt.txt<br />echo &quot;$servername\tcpu idle\t$mntdt\t$cpui&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report wating I/O&quot;<br />####report wating I/O<br />###从sar指令中,抓取cpu等待/O空闲值<br />cpuw=`sar |grep Average |awk &#39;{print $4}&#39;`<br />echo &quot;$servername\tcpu waiting I/O\t$mntdt\t$cpuw&quot; &gt;&gt; $mntdir/cwiosql_$filenamedt.txt<br />echo &quot;$servername\tcpu waiting I/O\t$mntdt\t$cpuw&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report memory user level&quot;<br />####report memory user level<br />###从svmon指令输出中,获得memory user<br />pmu=`svmon -G |awk &#39;/^memory/ {print $2}&#39;` <br />echo &quot;$servername\tphysical memory user level\t$mntdt\t$pmu&quot; &gt;&gt; $mntdir/pramsql_$filenamedt.txt<br />echo &quot;$servername\tphysical memory user level\t$mntdt\t$pmu&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />echo &quot;report total process&quot;<br />####report total process<br />###计算所有的进程数<br />tps=`ps -ef |wc -l` <br />echo &quot;$servername\ttotal process\t$mntdt\t$tps&quot; &gt;&gt; $mntdir/Tprocsql_$filenamedt.txt<br />echo &quot;$servername\ttotal process\t$mntdt\t$tps&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br /><br />###############################hacmp#######################<br />echo &quot;report process of hacmp is working&quot;<br />####report process of hacmp is working<br />hapcou=`lssrc -a |grep clust |wc -l` <br />if [ $hapcou -eq 3 ]<br />  then <br />    echo &quot;$servername\tprocess of hacmp is working\t$mntdt\tYes&quot; &gt; $mntdir/hapsql_$filenamedt.txt<br />    echo &quot;$servername\tprocess of hacmp is working\t$mntdt\tYes&quot; &gt;&gt; $ftpdir/dailycheck.txt<br />  else<br />    echo &quot;$servername\tprocess of hacmp is working\t$mntdt\tNO&quot;  &gt; $mntdir/hapsql_$filenamedt.txt<br />    echo &quot;$servername\tprocess of hacmp is working\t$mntdt\tNO&quot;  &gt;&gt; $ftpdir/dailycheck.txt<br />fi<br /><br />echo &quot;report hacmp daemon live&quot;<br />####report hacmp daemon live<br />hadcou=`ps -ef|grep cluster |grep -v grep |wc -l`<br />if [ $hadcou -eq 3 ]<br />  then <br />    echo &quot;$servername\thacmp daemon alive\t$mntdt\tYes&quot; &gt; $mntdir/hadsql_$filenamedt.txt<br />    echo &quot;$servername\thacmp daemon alive\t$mntdt\tYes&quot; &gt;&gt; $ftpdir/dailycheck.txt<br />  else<br />    echo &quot;$servername\thacmp daemon alive\t$mntdt\tNo&quot;  &gt; $mntdir/hadsql_$filenamedt.txt<br />    echo &quot;$servername\thacmp daemon alive\t$mntdt\tNo&quot;  &gt;&gt; $ftpdir/dailycheck.txt<br />fi<br /><br />echo &quot;report hacmp sync time&quot;<br />####report hacmp sync time<br />hst=`ps -ef|grep sync |grep -v grep |awk &#39;{print $10}&#39;`<br />echo &quot;$servername\thacmp sync timing\t$mntdt\t$hst&quot; &gt; $mntdir/hasyncsql_$filenamedt.txt<br />echo &quot;$servername\thacmp sync timing\t$mntdt\t$hst&quot; &gt;&gt; $ftpdir/dailycheck.txt<br />############################HACMP##############################################<br /><br />echo &quot;report errlog of MQ&quot;<br />####report errlog of MQ<br />###cat $mqerr |grep $mqerrdt<br />cd $mqerrdir<br />elm=`grep $mqerrdt AMQERR01.LOG |wc -l`<br />echo &quot;$servername\terror log of MQ\t$mntdt\t$elm&quot; &gt;&gt; $mntdir/mqerrcsql_$filenamedt.txt<br />echo &quot;$servername\terror log of MQ\t$mntdt\t$elm&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />oracount=`ps -ef |grep oracle |grep LOCAL=NO |wc -l`<br />echo &quot;$servername\toracle count\t$mntdt\t$oracount&quot; &gt;&gt; $mntdir/oracount_$filenamedt.txt<br />echo &quot;$servername\toracle count\t$mntdt\t$oracount&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />mqcount=`ps -ef |grep mq |grep /usr/mqm/bin/amqcrsta |wc -l`<br />echo &quot;$servername\tmq count\t$mntdt\t$mqcount&quot; &gt;&gt; $mntdir/mqcount_$filenamedt.txt<br />echo &quot;$servername\tmq count\t$mntdt\t$mqcount&quot; &gt;&gt; $ftpdir/dailycheck.txt<br /><br />#######################################################################<br />echo &quot;report file system space user%&quot;<br />####report file system space user%<br />rfsr=`df -k |grep -v Filesystem |sed &#39;2,$d&#39; |awk &#39;{print $4}&#39;`<br />rfsv=`df -k |grep -v Filesystem |sed &#39;2,$d&#39; |awk &#39;{print $2-$3}&#39;`<br />rfsn=`df -k |grep -v Filesystem |sed &#39;2,$d&#39; |awk &#39;{print $7}&#39;`<br />echo &quot;$servername\t$rfsn %Used\t$mntdt\t$rfsv\t$rfsr&quot; &gt;&gt; $mntdir/rfs_$filenamedt.txt<br />echo &quot;$servername\t$rfsn %Used\t$mntdt\t$rfsv\t$rfsr&quot; &gt;&gt; $ftpdir/devfssql.txt<br /><br /><br />homefsr=`df -k |awk &#39;/home/ {print $4}&#39;`<br />homefsv=`du -ks /home |awk &#39;{print $1}&#39;`<br />homefsn=`df -k |awk &#39;/home/ {print $7}&#39;`<br />echo &quot;$servername\t$homefsn %Used\t$mntdt\t$homefsv\t$homefsr&quot; &gt;&gt; $mntdir/homefs_$filenamedt.txt<br />echo &quot;$servername\t$homefsn %Used\t$mntdt\t$homefsv\t$homefsr&quot; &gt;&gt; $ftpdir/devfssql.txt<br /><br />usrfsr=`df -k |awk &#39;/usr/ {print $4}&#39;`<br />usrfsv=`du -ks /usr |awk &#39;{print $1}&#39;`<br />usrfsn=`df -k |awk &#39;/usr/ {print $7}&#39;`<br />echo &quot;$servername\t$usrfsn %Used\t$mntdt\t$usrfsv\t$usrfsr&quot; &gt;&gt; $mntdir/usrfs_$filenamedt.txt<br />echo &quot;$servername\t$usrfsn %Used\t$mntdt\t$usrfsv\t$usrfsr&quot; &gt;&gt; $ftpdir/devfssql.txt<br /><br />varfsr=`df -k |awk &#39;/var/ {print $4}&#39;`<br />varfsv=`du -ks /var |awk &#39;{print $1}&#39;`<br />varfsn=`df -k |awk &#39;/var/ {print $7}&#39;`<br />echo &quot;$servername\t$varfsn %Used\t$mntdt\t$varfsv\t$varfsr&quot; &gt;&gt; $mntdir/varfs_$filenamedt.txt<br />echo &quot;$servername\t$varfsn %Used\t$mntdt\t$varfsv\t$varfsr&quot; &gt;&gt; $ftpdir/devfssql.txt<br /><br />tmpfsr=`df -k |awk &#39;/tmp/ {print $4}&#39;`<br />tmpfsv=`du -ks /tmp |awk &#39;{print $1}&#39;`<br />tmpfsn=`df -k |awk &#39;/tmp/ {print $7}&#39;`<br />echo &quot;$servername\t$tmpfsn %Used\t$mntdt\t$tmpfsv\t$tmpfsr&quot; &gt;&gt; $mntdir/tmpfs_$filenamedt.txt<br />echo &quot;$servername\t$tmpfsn %Used\t$mntdt\t$tmpfsv\t$tmpfsr&quot; &gt;&gt; $ftpdir/devfssql.txt<br /><br /><br />#################################################################################<br /><br />sleep 3<br />echo &quot;start ftp process&quot;<br />#####start ftp process###########<br />hostip=&quot;XXX.XXX.XXX&quot;<br />login_name=&quot;username&quot;<br />password=&quot;userpw&quot;<br />ftp -v -n  $hostip &lt;&lt; EOF <br />user $login_name $password <br />binary<br />cd &quot;ftpserver_dir&quot;<br />lcd $ftpdir<br />prompt<br />mput *.txt<br />bye<br />EOF<br />##################################<br />cd $ftpdir<br />rm -f *.txt<br />find $mntdir -name *.txt -mtime +30 -exec rm {} \;<br />exit 0<br />##shell END<br /><br />小弟最近写的,系统巡检报告系统,我的系统应该是分三个部分,首先是SHELL,部分,将抓出来的资料,通过FTP,自动发到一台NT SERVER上,然后通过SQL 的自动排成,将资料自动塞入到数据库中,最后通过asp表示出来.<br />我在抓取值的时候一份是用来保存在r6主机上的,一份是用来传到FTPserver上的。 <!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo-->

2004-7-6 23:37 老农
收藏<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->

2004-7-7 08:12 fengwy
好!

2004-7-7 08:43 banker
强&#33;收藏

2004-7-7 09:07 congrd
厉害!再说说asp那部分?

2004-7-7 09:11 lion_dong
试试,谢楼主

2004-7-7 09:21 aln
#&#33;/bin/ksh<br />!号是什么意思

2004-7-7 09:24 sysjs
厉害!收藏。

2004-7-7 09:27 老农
<!--QuoteBegin-aln+2004-07-07 09:21:10--><div class='quotetop'>QUOTE(aln @ 2004-07-07 09:21:10)</div><div class='quotemain'><!--QuoteEBegin--> #&#33;/bin/ksh<br />!号是什么意思 <!--QuoteEnd--></div><!--QuoteEEnd--><br />shell文件的标准头

2004-7-7 09:29 燕狂徒
我也顶一下,先收藏

2004-7-7 09:33 aln
<!--QuoteBegin-老农+2004-07-07 09:27:39--><div class='quotetop'>QUOTE(老农 @ 2004-07-07 09:27:39)</div><div class='quotemain'><!--QuoteEBegin--> <!--QuoteBegin-aln+2004-07-07 09:21:10--><div class='quotetop'>QUOTE(aln @ 2004-07-07 09:21:10)</div><div class='quotemain'><!--QuoteEBegin--> #&#33;/bin/ksh<br />!号是什么意思 <!--QuoteEnd--></div><!--QuoteEEnd--><br />shell文件的标准头 <!--QuoteEnd--></div><!--QuoteEEnd--><br />shell文件中是不是必须有这一句?具体含义是什么?<br />那不在SHELL文件中,如果单独执行 !/bin/ksh有作用没有

2004-7-7 10:10 flying
<!--QuoteBegin-aln+2004-07-07 09:33:06--><div class='quotetop'>QUOTE(aln @ 2004-07-07 09:33:06)</div><div class='quotemain'><!--QuoteEBegin--> <!--QuoteBegin-老农+2004-07-07 09:27:39--><div class='quotetop'>QUOTE(老农 @ 2004-07-07 09:27:39)</div><div class='quotemain'><!--QuoteEBegin--> <!--QuoteBegin-aln+2004-07-07 09:21:10--><div class='quotetop'>QUOTE(aln @ 2004-07-07 09:21:10)</div><div class='quotemain'><!--QuoteEBegin--> #&#33;/bin/ksh<br />!号是什么意思 <!--QuoteEnd--></div><!--QuoteEEnd--><br />shell文件的标准头 <!--QuoteEnd--></div><!--QuoteEEnd--><br />shell文件中是不是必须有这一句?具体含义是什么?<br />那不在SHELL文件中,如果单独执行 !/bin/ksh有作用没有 <!--QuoteEnd--></div><!--QuoteEEnd--><br />我这边只是起到声明的作用,告诉读者我是在什么shell command下执行的。

2004-7-7 11:26 和爱一起飘洋
我可以在AIX上包括其他UNIX上测试了。<br />这个工具还是很不错,满方便的<br />做程序员就要做这样大家都需要的具有共性的产品<br /><br />谢谢你,楼主

2004-7-8 11:14 chinaix
值得收藏!顶。

2004-7-8 14:15 flying
DB 部分,我想大家已经看到我SHELL的输出格式了,主要就是为了好塞入DB,我的输出文件有三个,我为每个建了一个TABLE ,每个table建了四个字段,只有存file system space的table 、建了五个字段。然后通过sql的DTS 自动排成将TXT档中讯息,每个几分钟自动塞入到DB中,SHELL也是每个几分钟跑一次。(这个大家可以根据需要自己定义)<br />ASP,部分我觉的是根据大家不同的需要,各自编写的。因为ASP涉及到一些其他的原因我这边就不方便铁出来了,再说ASP部分也实在是太多了,我的主要包括了一个daily check ,报表作业,和异常报告,三个部分。晚些时候,我可以把页面贴出来给大家参考一下,大家有什么好的注意,也请说出来。给大家共享。

2004-7-8 16:45 jms888
<!--emo&:haha:--><img src='style_emoticons/default/haha.gif' border='0' style='vertical-align:middle' alt='haha.gif' /><!--endemo--> Ding

2004-7-8 17:04 aken
谢谢~收藏了! <!--emo&:haha:--><img src='style_emoticons/default/haha.gif' border='0' style='vertical-align:middle' alt='haha.gif' /><!--endemo-->

2004-7-8 20:16 原野
<!--emo&:rose:--><img src='style_emoticons/default/rose.gif' border='0' style='vertical-align:middle' alt='rose.gif' /><!--endemo--> 收藏!

2004-7-8 20:42 biml2002
写的不错,珍藏!

2004-7-24 23:39 永杰
呵呵,正好需要

2004-7-25 00:33 逍遥剑
好东西,收藏了

2004-7-26 16:51 donydong
太厉害了,收藏

2004-7-26 20:01 wenger
有收藏价值。<br /><br />&quot;#&#33;/bin/ksh&quot;放在shell脚本的最开始,表示下面的脚本在“ksh”下执行。其中的“#”并不是注释。

2004-10-14 11:31 jiafan
确实是好东西。顶!!!!

页: [1] 2 3
查看完整版本: 系统巡检,shell部分。


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.