免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6982 | 回复: 17
打印 上一主题 下一主题

AIX系统主机日常检查脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-08 16:24 |只看该作者 |倒序浏览
#!/bin/sh \r\n#\r\n# 首先载入配置文件,如果配置文件不存在,则报错退出\r\n#\r\nSOURCE=$HOME/config/config\r\ncheck_source()\r\n{\r\nif [ -r $SOURCE ]; then \r\n    . $SOURCE\r\nelse\r\n    echo \"$(basename $0): Cannot locate the default setting file.\"\r\n    exit 1\r\nfi\r\n}\r\n\r\n#\r\n# 定义报表头\r\n#\r\nreport_header()\r\n{\r\nHOSTIP=$(ifconfig -a | sed -n \'2p\' |awk \'{print $2}\')\r\nHOSTNAME=$(hostname)\r\nUSER=`who am i | cut -d \"   \" -f1`\r\ncat<<!\r\nHostname: $HOSTNAME        Server: $HOSTIP\r\nUser: $USER         Time: $(date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S)\r\n\r\n                                 SYSTEM CHECK REPORT\r\n                                 ===================\r\n\r\n!\r\n}\r\n\r\n#\r\n# 定义日志文件存放的目录和日志文件名,将当前用户目录设置为LOG_PATH\r\n#\r\nLOG_PATH=$(echo $HOME)\r\nLOG_FILE=$LOG_PATH/log`date +%Y%m%d%H%M%S`\r\n\r\n#\r\n# 备份历史文件\r\n#\r\ncd $LOG_PATH\r\ntest -f log2007*\r\nif [ \"$?\" -eq 0 ];then\r\n    mv $LOG_PATH/log2007* $LOG_PATH/niyl/ >/dev/null 2>&1\r\nelse \r\n    :\r\nfi\r\n\r\n#define temp directory ,if not exist,create temp directory first.\r\nTEMP_PATH=$LOG_PATH/temp\r\nif [ -d $TEMP_PATH ];then\r\n:\r\nelse\r\nmkdir $TEMP_PATH\r\nfi\r\n\r\n#\r\n# 载入环境设置\r\n#\r\ncheck_source\r\n\r\n#\r\n# 输出报表头信息\r\n#\r\nreport_header >>$LOG_FILE\r\n\r\n\r\n# 检查 CPU的使用情况,这里使用vmstat命令\r\necho \"***************************************** Check CPU *****************************************\">>$LOG_FILE\r\nvmstat 1 10 | awk \'{print $0;if($1 ~ /^[0-9].*/) (totalcpu+=$16);(avecpu=100-totalcpu/10)}; END {print \"The average usage of \r\ncpu is :\"avecpu}\' >$TEMP_PATH/cpu_info\r\n\r\ncat $TEMP_PATH/cpu_info >>$LOG_FILE\r\n\r\ncpu_used_pct=`cat $TEMP_PATH/cpu_info | grep \"The average usage of cpu is\" |awk -F \":\" \'{print $2}\' `\r\nif [ \"$cpu_used_pct\" -gt \"$CPU_VALUE\" ] ; then\r\n    echo \"LOG-Warnning:`date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`, CPU负载超过阀值设置,请检查系统!!\">>$LOG_FILE\r\nelse\r\necho \"\\t\\t\\t\\t CPU负载正常!!\">>$LOG_FILE\r\nfi\r\n\r\n#\r\n# 内存使用监控,包括交换区的使用情况监控   ÷\r\n#                               \r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check memory useage *****************************************\">>$LOG_FILE\r\ncat $TEMP_PATH/cpu_info | awk \'{print $0;if($1 ~ /^[0-9].*/) (totalpi+=$6)(totalpo+=$7)};\\\r\nEND {if(totalpi<10 && totalpo<10) print \"\\t\\t\\t\\tMemory负载正常!!\"; if(totalpi>10 || totalpo>10) print \"Memory负载异常,请检 \r\n查系统!!\"} \'>>$LOG_FILE\r\n\r\n#\r\n# 检查磁盘空间. ÷\r\n#\r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check disk space *****************************************\">>$LOG_FILE\r\ndf -k >>$LOG_FILE\r\ndf -k |grep -v proc |grep -v Filesystem |awk \'{x=1*$4}{print $1\",\"$2\",\"$3\",\"$4\",\"$5\",\"$6\",\"$7}\'>$TEMP_PATH/disk_info\r\n\r\ncat $TEMP_PATH/disk_info | grep -v \'^#\' | while read line\r\ndo\r\nitem1=$(echo $line | awk -F \',\' \'{print $1}\')\r\nitem2=$(echo $line | awk -F \',\' \'{print $2}\')\r\nitem3=$(echo $line | awk -F \',\' \'{print $3}\')\r\nitem4=$(echo $line | awk -F \',\' \'{print $4}\' |awk -F \'%\' \'{print $1}\')\r\nitem5=$(echo $line | awk -F \',\' \'{print $5}\')\r\nitem6=$(echo $line | awk -F \',\' \'{print $6}\')\r\nitem7=$(echo $line | awk -F \',\' \'{print $7}\')\r\nif [ \"$item4\" -gt \"$DISK_VALUE\" ]; then\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`, 磁盘$item7\\t剩余空间不足,请处理!!\" >>$LOG_FILE\r\nelse\r\n    echo \"\\t\\t\\t\\t 磁盘空间$item7\\t\\t使用正常!!\" >>$LOG_FILE\r\nfi\r\ndone\r\n\r\n#\r\n# 检查磁盘的io进行监控,iostat\r\n# \r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check iostat *****************************************\">>$LOG_FILE\r\niostat 1 3 >>$LOG_FILE\r\n\r\n#\r\n# 对网络流量进行监控,在这里可以作一个主机列表,对每个主机ping检查网络是否连通。\r\n#\r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check netstat *****************************************\">>$LOG_FILE\r\nnetstat -i >>$LOG_FILE\r\n\r\n#\r\n# 检查主机的告警日志 \r\n#\r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check system err *****************************************\">>$LOG_FILE\r\nerrpt | head -10 >>$LOG_FILE\r\nday=`date +%D |awk -F \"/\" \'{print $1$2}\'`\r\nerrpt | awk \'{print $2}\' | grep ^$day\r\nif [ $? -eq 0 ] ; then \r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The system has found a error today.Please check the error \r\nreport.\" >>$LOG_FILE\r\nelse\r\n    echo >>$LOG_FILE\r\n    echo \"\\t\\t\\t\\t There is no system error report today.System is OK!!\" >>$LOG_FILE\r\nfi\r\n\r\n#\r\n# 检查HA的运行是否正常                \r\n#\r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check HACMP status *****************************************\">>$LOG_FILE\r\n/usr/es/sbin/cluster/clstat -o > $TEMP_PATH/ha_info\r\nlssrc -g cluster >> $TEMP_PATH/ha_info\r\ncat $TEMP_PATH/ha_info >>$LOG_FILE \r\necho >>$LOG_FILE\r\ncat $TEMP_PATH/ha_info| grep \"Node:\" |awk -F \':\' \'{print $2,$3}\' | awk \'{print $1,$3}\' | while read line \r\ndo\r\nnode=$(echo $line | awk \'{print $1}\')\"\'s\"\r\necho $line |grep UP$ >/dev/null\r\nif [ \"$?\" -eq 0 ]; then \r\necho \"\\t\\t\\t\\t The node $node is OK!!\" >>$LOG_FILE \r\nelse\r\necho \"`date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,LOG-Warnning: The node $node status is DOWN ,it was terminated .\" \r\n>>$LOG_FILE \r\nfi\r\ndone\r\n\r\n\r\n\r\n#\r\n# 检查数据库主要的6个进程是否正常.   \r\n#                                   \r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check oracle process *****************************************\">>$LOG_FILE\r\nps -ef | grep ora_ | grep -v grep | awk -F \'-\' \'{print $2}\' | awk \'{print $2}\' >/$TEMP_PATH/ora_process_info\r\nps -ef | grep ora_ | grep -v grep >>$LOG_FILE\r\n\r\n# background process ckpt \r\nif [ `grep ora_ckpt_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=1\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_ckpt_ora92 was terminated!\" >>$LOG_FILE \r\nfi\r\n\r\n# background process dbwr \r\nif [ `grep ora_dbw0_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=$((COUNT+1))\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_dbw0_ora92 was terminated !\" >>$LOG_FILE \r\nfi\r\n\r\n# background process reco \r\nif [ `grep ora_reco_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=$((COUNT+1))\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_reco_ora92 was terminated !\" >>$LOG_FILE \r\nfi\r\n\r\n# background process lgwr\r\nif [ `grep ora_lgwr_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=$((COUNT+1))\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_lgwr_ora92 was terminated !\" >>$LOG_FILE \r\nfi\r\n\r\n# background process pmon\r\nif [ `grep ora_pmon_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=$((COUNT+1))\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_pmon_ora92 was terminated !\" >>$LOG_FILE \r\nfi\r\n\r\n# background process smon \r\nif [ `grep ora_smon_ora92 $TEMP_PATH/ora_process_info` ]; then\r\n    COUNT=$((COUNT+1))\r\nelse\r\n    echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Process ora_smon_ora92 was terminated !\" >>$LOG_FILE \r\nfi\r\n\r\nif [ \"$COUNT\" -eq 6 ];then\r\n    echo >>$LOG_FILE \r\n    echo \"\\t\\t\\t\\tThe main six Oracle processes is OK !!\" >>$LOG_FILE \r\nelse\r\n    :\r\nfi\r\n\r\n\r\n# \r\n# Check the oracle tablespace.\r\n# \r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check oracle tablespace *****************************************\">>$LOG_FILE\r\n#su - oracle -c sqlplus dxh/dxh < /home/guest/dxhwh/niyl/tablespace_query.sql >>$LOG_FILE\r\nsqlplus -s xxx/xxx <<!EOF > $TEMP_PATH/ts_info\r\nset pagesize 100\r\nset linesize 100\r\ncol status for a10\r\ncol tablespace_name for a20\r\ncol contents for a10\r\ncol \"size(M)\" for a15\r\ncol used for a15\r\ncol pct for a10\r\nselect d.status, d.tablespace_name, \r\n        TO_CHAR(NVL(a.bytes / 1024 /1024, 0),\'99G999G990\') \"size(M)\",\r\n        TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0),0)/1024/1024, \'99G999G990D00\') used,\r\n        TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0), \'990D00\')||\'%\' pct\r\nFROM sys.dba_tablespaces d,\r\n        (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,\r\n        (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f\r\nWHERE d.tablespace_name = a.tablespace_name(+) \r\nAND d.tablespace_name = f.tablespace_name(+)\r\norder by tablespace_name ;\r\nexit\r\n!EOF\r\n\r\ncat $TEMP_PATH/ts_info>>$LOG_FILE\r\ncat $TEMP_PATH/ts_info |grep ONLINE |awk \'{print $2\":\"$3\":\"$4\":\"$5}\' |while read line\r\ndo\r\nts_name=$(echo $line |awk -F \':\' \'{print $1}\')\r\nts_total=$(echo $line |awk -F \':\' \'{print $2}\')\r\nts_used=$(echo $line |awk -F \':\' \'{print $3}\')\r\nts_used_pct=$(echo $line |awk -F \':\' \'{print $4}\' |awk -F \'%\' \'{print $1}\'|awk -F \'.\' \'{print $1}\')\r\nif [ \"$ts_used_pct\" -gt \"$TS_VALUE\" -o \"$ts_used_pct\" -eq \"$TS_VALUE\" ]; then \r\necho \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,表空间$ts_name 的剩余空间紧张,请尽快清理表空间!\" >>$LOG_FILE \r\nelse\r\necho \"\\t\\t\\t\\t The tablespace of $ts_name\\t is OK!!\" >>$LOG_FILE \r\nfi\r\ndone\r\n\r\n# \r\n# Check the oracle Job.\r\n# \r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check oracle job *****************************************\">>$LOG_FILE\r\nsqlplus -s xxx/xxx <<!!ET >> $LOG_FILE\r\ncol job for 999\r\ncol last_date for a20\r\ncol next_date for a20\r\ncol what for a40\r\nset linesize 120\r\n\r\nselect job,what,\r\n       to_char(last_date,\'yyyy-mm-dd hh24:mi:ss\') last_date,\r\n       to_char(next_date,\'yyyy-mm-dd hh24:mi:ss\') next_date,\r\n       failures\r\nfrom dba_jobs \r\norder by job;\r\n!!ET\r\n\r\nsqlplus -s xxx/xxx <<!EOF > $TEMP_PATH/job_info\r\ncol flag for a5\r\ncol rou for 99999\r\nselect \'XXX\' flag,job,failures,broken,round(next_date-sysdate,2)*100 rou from dba_jobs order by job;\r\n!EOF\r\n\r\ncat $TEMP_PATH/job_info |grep XXX |awk \'{print $2,$3,$4,$5}\' |while read line\r\ndo\r\njobnum=`echo $line | awk \'{print $1}\'`\r\nfailure=`echo $line | awk \'{print $2}\'`\r\nbroken=`echo $line | awk \'{print $3}\'`\r\nround=`echo $line | awk \'{print $4}\'`\r\nif [ \"$jobnum\" -eq 3 -o \"$jobnum\" -eq 4 ] ; then\r\n\r\nif [ \"$failure\" -eq 0 -a \"$broken\"=\"N\" -a \"$round\" -le 100 ]; then\r\n   echo \"\\t\\t\\t\\tThe Job $jobnum is OK!!\" >>$LOG_FILE\r\nelse\r\n   echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Job $jobnum was terminated !\" >>$LOG_FILE\r\nfi\r\nelse\r\nif [ \"$failure\" -eq 0 -a \"$broken\"=\"N\" -a \"$round\" -eq 0 ]; then \r\n   echo \"\\t\\t\\t\\tThe Job $jobnum is OK!!\" >>$LOG_FILE\r\nelse\r\n   echo \"LOG-Warnning: `date +%Y\'-\'%m\'-\'%d\' \'%H\':\'%M\':\'%S`,The Job $jobnum was terminated !\" >>$LOG_FILE\r\nfi\r\nfi\r\ndone\r\n\r\n\r\n\r\n#\r\n# Check oracle alert log.\r\n#\r\necho >>$LOG_FILE\r\necho >>$LOG_FILE\r\necho \"***************************************** check oracle alert log *****************************************\">>$LOG_FILE\r\ntail -300 $ORACLE_BASE/admin/ora92/bdump/alert_ora92.log | grep -v Thread | \\\r\ngrep -v Current | grep -v \"`date +\'%a %h\'`\" | grep -v \":[0-9][0-9]:\" >>$LOG_FILE

论坛徽章:
0
2 [报告]
发表于 2009-01-21 13:10 |只看该作者
带数据库检查的aix脚本

论坛徽章:
0
3 [报告]
发表于 2009-02-02 12:22 |只看该作者
thank you very much!!!!!

论坛徽章:
0
4 [报告]
发表于 2009-02-07 00:36 |只看该作者
thank you very much!!!!!

论坛徽章:
0
5 [报告]
发表于 2009-02-22 23:20 |只看该作者
多谢,正好需要这方面的资料!

论坛徽章:
0
6 [报告]
发表于 2009-05-04 21:51 |只看该作者
顶一下,楼主太牛了。

论坛徽章:
0
7 [报告]
发表于 2009-05-20 11:08 |只看该作者
太多了,应该附加一个附件的。

论坛徽章:
0
8 [报告]
发表于 2009-05-25 11:39 |只看该作者
真实用!收藏了!\r\n本文来自: IXPUB技术社区(www.ixpub.net) 详细出处参考:http://www.ixpub.net/thread-894769-1-4.html

论坛徽章:
0
9 [报告]
发表于 2009-05-25 12:05 |只看该作者
哇,好详细的教材,谢谢

论坛徽章:
0
10 [报告]
发表于 2009-10-12 21:03 |只看该作者
:hou33: \r\n\r\n\r\nAIX系统主机日常检查脚本
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP