2004-7-6 23:31
flying
#!/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 +"20%y-%m-%d %H:%M"`<br />syserrdate=`date +"%m%d"`<br />mqerrdt=`date +"%m/%d/%y"`<br />filenamedt=`date +"20%y%m%d"`<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 "report system error"<br />####report system error<br />####判断今天有没有新的error及其个数<br />errdate=`errpt |grep -v IDENTIFIER |awk '{print $2}' |cut -c 1-4 |xargs`<br />for syserrFor1 in $errdate<br /><br />do<br /> if [ "$syserrFor1" = "$syserrdate" ]<br /> then<br /> newerrcount=`expr $errcount + 1`<br /> errcount=$newerrcount<br /> fi <br />done<br />echo "$servername\tsystem error report\t$mntdt\t$errcount" >> $mntdir/errsql_$filenamedt.txt<br />echo "$servername\tsystem error report\t$mntdt\t$errcount" >> $ftpdir/dailycheck.txt<br /><br />echo "report active virtual papgs"<br />####report active virtual papgs<br />###从vmstat输出信息中抓出,活动页面数<br />vmstat 1 10 |sed '1,12d' > $tmpdir/vmdata.txt<br />avp=`cat $tmpdir/vmdata.txt |awk '{print $3}'` <br />echo "$servername\tactive virtual pages\t$mntdt\t$avp" >> $mntdir/avmsql_$filenamedt.txt<br />echo "$servername\tactive virtual pages\t$mntdt\t$avp" >> $ftpdir/dailycheck.txt<br /><br />echo "report size of the free list"<br />####report size of the free list<br />###从vmstat输出信息中抓出,空闲页面数<br />slf=`cat $tmpdir/vmdata.txt |awk '{print $4}'`<br />echo "$servername\tsize of the free list\t$mntdt\t$slf" >> $mntdir/fresql_$filenamedt.txt<br />echo "$servername\tsize of the free list\t$mntdt\t$slf" >> $ftpdir/dailycheck.txt<br /><br />echo "report paged in from paging space"<br />####report paged in from paging space<br />###从vmstat输出信息中抓出,paged in页面数<br />pspi=`cat $tmpdir/vmdata.txt |awk '{print $6}'` <br />echo "$servername\tpaged in from paging space\t$mntdt\t$pspi" >> $mntdir/pisql_$filenamedt.txt<br />echo "$servername\tpaged in from paging space\t$mntdt\t$pspi" >> $ftpdir/dailycheck.txt<br /><br />echo "report paged out from paging space"<br />####report paged out from paging space<br />###vmstat输出信息中抓出,paged out页面数<br />pspo=`cat $tmpdir/vmdata.txt |awk '{print $7}'`<br />echo "$servername\tpaged out from paging space\t$mntdt\t$pspo" >> $mntdir/posql_$filenamedt.txt<br />echo "$servername\tpaged out from paging space\t$mntdt\t$pspo" >> $ftpdir/dailycheck.txt<br /><br />echo "report network error number"<br />####report network error number<br />###从netstat -in输出信息中,抓取network error number<br />netstat -in |grep -v Name |sed '5,$d' > $tmpdir/netstat.txt<br />awk '{err=($6 + $8 > 0) ? $6 + $8:0; print err}' $tmpdir/netstat.txt |xargs > $tmpdir/nerr.txt<br />nen=`awk '{$1 += $2; $1 += $3; $1 += $4; $1 += $5; $1 += $6; print $1}' $tmpdir/nerr.txt` <br />echo "$servername\tnetwork error number\t$mntdt\t$nen" >> $mntdir/Tnerrsql_$filenamedt.txt<br />echo "$servername\tnetwork error number\t$mntdt\t$nen" >> $ftpdir/dailycheck.txt<br /><br />echo "report network collisions number"<br />####report network collisions number<br />###从netstat -in输出信息中,抓取network collisions number<br />awk '{print $9}' $tmpdir/netstat.txt |xargs > $tmpdir/ncoll.txt<br />cln=`awk '{$1 += $2; $1 += $3; $1 += $4; $1 += $5; $1 += $6; print $1}' $tmpdir/ncoll.txt` <br />echo "$servername\tcollisions number\t$mntdt\t$cln" >> $mntdir/ncollsql_$filenamedt.txt<br />echo "$servername\tcollisions number\t$mntdt\t$cln" >> $ftpdir/dailycheck.txt<br />netstat -Zi<br /><br />echo "report cpu executing at the user level"<br />####report cpu executing at the user level<br />###从sar指令中,抓取cpu usr%<br />cpuu=`sar |grep Average |awk '{print $2}'` <br />echo "$servername\tcpu executing at the user level\t$mntdt\t$cpuu" >> $mntdir/cusersql_$filenamedt.txt<br />echo "$servername\tcpu executing at the user level\t$mntdt\t$cpuu" >> $ftpdir/dailycheck.txt<br /><br />echo "report cpu executing at the system level"<br />####report cpu executing at the system level<br />###从sar指令中,抓取cpu sys%<br />cpus=`sar |grep Average |awk '{print $3}'` <br />echo "$servername\tcpu executing at the system level\t$mntdt\t$cpus" >> $mntdir/csyssql_$filenamedt.txt<br />echo "$servername\tcpu executing at the system level\t$mntdt\t$cpus" >> $ftpdir/dailycheck.txt<br /><br />echo "report cpu idle"<br />#####report cpu idle<br />###从sar指令中,抓取cpu idle<br />cpui=`sar |grep Average |awk '{print $5}'` <br />echo "$servername\tcpu idle\t$mntdt\t$cpui" >> $mntdir/cidlesql_$filenamedt.txt<br />echo "$servername\tcpu idle\t$mntdt\t$cpui" >> $ftpdir/dailycheck.txt<br /><br />echo "report wating I/O"<br />####report wating I/O<br />###从sar指令中,抓取cpu等待/O空闲值<br />cpuw=`sar |grep Average |awk '{print $4}'`<br />echo "$servername\tcpu waiting I/O\t$mntdt\t$cpuw" >> $mntdir/cwiosql_$filenamedt.txt<br />echo "$servername\tcpu waiting I/O\t$mntdt\t$cpuw" >> $ftpdir/dailycheck.txt<br /><br />echo "report memory user level"<br />####report memory user level<br />###从svmon指令输出中,获得memory user<br />pmu=`svmon -G |awk '/^memory/ {print $2}'` <br />echo "$servername\tphysical memory user level\t$mntdt\t$pmu" >> $mntdir/pramsql_$filenamedt.txt<br />echo "$servername\tphysical memory user level\t$mntdt\t$pmu" >> $ftpdir/dailycheck.txt<br /><br />echo "report total process"<br />####report total process<br />###计算所有的进程数<br />tps=`ps -ef |wc -l` <br />echo "$servername\ttotal process\t$mntdt\t$tps" >> $mntdir/Tprocsql_$filenamedt.txt<br />echo "$servername\ttotal process\t$mntdt\t$tps" >> $ftpdir/dailycheck.txt<br /><br /><br />###############################hacmp#######################<br />echo "report process of hacmp is working"<br />####report process of hacmp is working<br />hapcou=`lssrc -a |grep clust |wc -l` <br />if [ $hapcou -eq 3 ]<br /> then <br /> echo "$servername\tprocess of hacmp is working\t$mntdt\tYes" > $mntdir/hapsql_$filenamedt.txt<br /> echo "$servername\tprocess of hacmp is working\t$mntdt\tYes" >> $ftpdir/dailycheck.txt<br /> else<br /> echo "$servername\tprocess of hacmp is working\t$mntdt\tNO" > $mntdir/hapsql_$filenamedt.txt<br /> echo "$servername\tprocess of hacmp is working\t$mntdt\tNO" >> $ftpdir/dailycheck.txt<br />fi<br /><br />echo "report hacmp daemon live"<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 "$servername\thacmp daemon alive\t$mntdt\tYes" > $mntdir/hadsql_$filenamedt.txt<br /> echo "$servername\thacmp daemon alive\t$mntdt\tYes" >> $ftpdir/dailycheck.txt<br /> else<br /> echo "$servername\thacmp daemon alive\t$mntdt\tNo" > $mntdir/hadsql_$filenamedt.txt<br /> echo "$servername\thacmp daemon alive\t$mntdt\tNo" >> $ftpdir/dailycheck.txt<br />fi<br /><br />echo "report hacmp sync time"<br />####report hacmp sync time<br />hst=`ps -ef|grep sync |grep -v grep |awk '{print $10}'`<br />echo "$servername\thacmp sync timing\t$mntdt\t$hst" > $mntdir/hasyncsql_$filenamedt.txt<br />echo "$servername\thacmp sync timing\t$mntdt\t$hst" >> $ftpdir/dailycheck.txt<br />############################HACMP##############################################<br /><br />echo "report errlog of MQ"<br />####report errlog of MQ<br />###cat $mqerr |grep $mqerrdt<br />cd $mqerrdir<br />elm=`grep $mqerrdt AMQERR01.LOG |wc -l`<br />echo "$servername\terror log of MQ\t$mntdt\t$elm" >> $mntdir/mqerrcsql_$filenamedt.txt<br />echo "$servername\terror log of MQ\t$mntdt\t$elm" >> $ftpdir/dailycheck.txt<br /><br />oracount=`ps -ef |grep oracle |grep LOCAL=NO |wc -l`<br />echo "$servername\toracle count\t$mntdt\t$oracount" >> $mntdir/oracount_$filenamedt.txt<br />echo "$servername\toracle count\t$mntdt\t$oracount" >> $ftpdir/dailycheck.txt<br /><br />mqcount=`ps -ef |grep mq |grep /usr/mqm/bin/amqcrsta |wc -l`<br />echo "$servername\tmq count\t$mntdt\t$mqcount" >> $mntdir/mqcount_$filenamedt.txt<br />echo "$servername\tmq count\t$mntdt\t$mqcount" >> $ftpdir/dailycheck.txt<br /><br />#######################################################################<br />echo "report file system space user%"<br />####report file system space user%<br />rfsr=`df -k |grep -v Filesystem |sed '2,$d' |awk '{print $4}'`<br />rfsv=`df -k |grep -v Filesystem |sed '2,$d' |awk '{print $2-$3}'`<br />rfsn=`df -k |grep -v Filesystem |sed '2,$d' |awk '{print $7}'`<br />echo "$servername\t$rfsn %Used\t$mntdt\t$rfsv\t$rfsr" >> $mntdir/rfs_$filenamedt.txt<br />echo "$servername\t$rfsn %Used\t$mntdt\t$rfsv\t$rfsr" >> $ftpdir/devfssql.txt<br /><br /><br />homefsr=`df -k |awk '/home/ {print $4}'`<br />homefsv=`du -ks /home |awk '{print $1}'`<br />homefsn=`df -k |awk '/home/ {print $7}'`<br />echo "$servername\t$homefsn %Used\t$mntdt\t$homefsv\t$homefsr" >> $mntdir/homefs_$filenamedt.txt<br />echo "$servername\t$homefsn %Used\t$mntdt\t$homefsv\t$homefsr" >> $ftpdir/devfssql.txt<br /><br />usrfsr=`df -k |awk '/usr/ {print $4}'`<br />usrfsv=`du -ks /usr |awk '{print $1}'`<br />usrfsn=`df -k |awk '/usr/ {print $7}'`<br />echo "$servername\t$usrfsn %Used\t$mntdt\t$usrfsv\t$usrfsr" >> $mntdir/usrfs_$filenamedt.txt<br />echo "$servername\t$usrfsn %Used\t$mntdt\t$usrfsv\t$usrfsr" >> $ftpdir/devfssql.txt<br /><br />varfsr=`df -k |awk '/var/ {print $4}'`<br />varfsv=`du -ks /var |awk '{print $1}'`<br />varfsn=`df -k |awk '/var/ {print $7}'`<br />echo "$servername\t$varfsn %Used\t$mntdt\t$varfsv\t$varfsr" >> $mntdir/varfs_$filenamedt.txt<br />echo "$servername\t$varfsn %Used\t$mntdt\t$varfsv\t$varfsr" >> $ftpdir/devfssql.txt<br /><br />tmpfsr=`df -k |awk '/tmp/ {print $4}'`<br />tmpfsv=`du -ks /tmp |awk '{print $1}'`<br />tmpfsn=`df -k |awk '/tmp/ {print $7}'`<br />echo "$servername\t$tmpfsn %Used\t$mntdt\t$tmpfsv\t$tmpfsr" >> $mntdir/tmpfs_$filenamedt.txt<br />echo "$servername\t$tmpfsn %Used\t$mntdt\t$tmpfsv\t$tmpfsr" >> $ftpdir/devfssql.txt<br /><br /><br />#################################################################################<br /><br />sleep 3<br />echo "start ftp process"<br />#####start ftp process###########<br />hostip="XXX.XXX.XXX"<br />login_name="username"<br />password="userpw"<br />ftp -v -n $hostip << EOF <br />user $login_name $password <br />binary<br />cd "ftpserver_dir"<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:43
banker
强!收藏
2004-7-7 09:07
congrd
厉害!再说说asp那部分?
2004-7-7 09:11
lion_dong
试试,谢楼主
2004-7-7 09:21
aln
#!/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--> #!/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--> #!/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--> #!/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 />"#!/bin/ksh"放在shell脚本的最开始,表示下面的脚本在“ksh”下执行。其中的“#”并不是注释。
2004-10-14 11:31
jiafan
确实是好东西。顶!!!!
页:
[1]
2
3
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.