solaris巡检脚本

solaris巡检脚本:

#!/bin/bash
export LANG=C

echo ''
echo ''
echo ''
banner `hostname`
echo '**主机名(hostname)**'
hostname


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
OS=$(cat /etc/release |grep Solaris |awk '{print $1,$2,$3}')
echo '操作系统版本:' $OS 


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
echo '**系统运行时间(uptime)**'
date=$(uptime |awk '{print $3}')
echo '系统已经运行 '$date' 天!'


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
echo '**系统上次启动时间(last)**'
last reboot|head -1


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
gateway=$(netstat -rn|grep -i default|awk '{print $2}')
echo '系统网关IP:'$gateway''
ping=$(ping $gateway|awk '{print $3}')
if [[ $ping != alive ]];then
echo '警告:无法ping通' $gateway '地址,请检查网络!!!'
else
echo '正常ping通:' $gateway ' ,网络正常'
fi


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
echo '**文件系统使用率超过90%的文件系统**'
echo ''
FS=$(df -k|sed '1d'|nawk 'sub("%","",$5) {if ($5 > 90) print $6}'|xargs)
if [[ $FS = '' ]];then
echo '文件系统使用率正常'
else
for i in $FS
do
echo "文件系统:$i  > %90!"
done
fi

echo ''
echo "**超过90%的文件系统实际使用情况**"
echo ''
df -k|sed '1d'|nawk 'sub("%","",$5) {if ($5 > 90) print $6,"  :",$5"%"}'


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
hba1=$(luxadm -e port |grep -iv "NOT CONNECTED" |awk 'END {print NR}')
hbacount=$(fcinfo hba-port |grep -i "State: online"|awk 'END {print NR}'|awk '{if ($1~/'$hba1'/) print $0}')
hbasumcount=$(fcinfo hba-port |grep -i "HBA Port WWN"|awk 'END {print NR}')
if [[ $hbasumcount = '' ]];then
echo '主机无HBA卡!!!'
else
echo '主机HBA卡正常使用端口数: ' $hbacount
echo 'HBA卡总端口数: ' $hbasumcount
echo ''
echo 'HBA卡WWN:'
fcinfo hba-port |grep -i "HBA Port WWN"
echo ''
fi


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
powercheck=$(powermt)
powermtinfo=$(powermt display dev=all|grep -i pci |awk '{print $7}')
PowerPatchcount=$(powermt display dev=all|grep -i pci |awk '{print $7}'|awk 'END {print NR}')
echo ''
if [[ $powercheck = '' ]];then
echo '系统没有安装PowerPatch多路径!!'
else
echo "PowerPatch多路径磁盘链路状态!!!"
echo ''
powermt display dev=all|grep -i pci |awk '{print $3,$7}'
echo "PowerPatch 共计涉及( " $PowerPatchcount " )条链路!!"
fi
echo ''
for z in $powermtinfo
do
if [[ $z != 'alive' ]];then
echo "注意:PowerPatch链路状态存在异常!!"
fi
done


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
sdsinfo=$(metastat)
if [[ $sdsinfo = '' ]];then
echo "没有使用SVM卷管理"
else
echo "系统使用了SVM卷管理"
echo ''
fi

metainfo=$(metastat -p |grep -i m|awk '{print $1}')
for p in $metainfo
do
if [[ $p != '' ]];then
echo $p "卷状态:"
metastat $p|grep -i "State:"|awk '{print $2}'
echo ''
else
break
fi
done


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
echo '**近期系统的core dump文件检查**'
echo ''
hostname=$(hostname)
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
date3=$(date|awk '{print $6}')
coredump=$(ls -l /var/crash/$hostname|sed '1d'|awk '{if ($6~/'$date1'/&&$7>='$date2'-3) print $0}')
if [[ $coredump = '' ]];then
echo '无core dump文件产生'
else
echo '最近3天产生了core dump文件'
echo ''
ls -l /var/crash/$hostname|sed '1d'|awk '{if ($6~/'$date1'/&&$7>='$date2'-3) print $0}'
fi


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
echo '**磁盘介质错误数量**'
echo ''
IO=$(iostat -En |grep -i "Hard Errors" |nawk '{if ($7 > 1) print $1}'|xargs)
if [[ $IO = '' ]];then
echo '磁盘正常'
else
for i in $IO
do
echo "磁盘:$i 的Hard Errors数量> 1 需要注意观察!!!"
done
fi


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
vxvmcheck=$(pkginfo -l VRTSvxvm |grep -i VERSION)
vxdiskeerror=$(vxdisk list |grep -v online|grep -iv STATUS|awk 'END {print NR}')
if [[ $vxvmcheck = '' ]];then
echo '系统没有安装VERITAS产品!!'
else
echo '系统已经安装VERITAS产品!!'
echo ''
echo "VERITAS版本:" $vxvmcheck
echo ''
echo "异常磁盘数量(vxdisk):" $vxdiskeerror
echo ''
echo "异常磁盘信息如下" 
vxdisk list |grep -v online
echo ''
fi

hainfo=$(hastatus -sum)
hafault=$(hastatus -sum|grep -i FAULT)
haerror=$(hastatus -sum|grep -i error)
if [[ $hainfo = '' ]];then
echo ''
elif [[ $hafault != '' ]] || [[ $haerror != '' ]];then
echo '**************************************'
echo ''
echo "注意:VCS双机资源存在异常!!!"
echo ''
echo "VCS双机资源错误信息如下:"
hastatus -sum
else
echo "VCS双机资源运行正常!!!"
fi


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
banner "messages"
echo ''
echo ''
echo ''
count=$(cat /var/adm/message* |grep -i panic |awk '{print $0}'|awk 'END {print NR}')
echo '系统中产生的panic的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
count=$(cat /var/adm/message* |grep -i panic |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|awk 'END {print 

NR}')
echo '今天产生的panic的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
echo '今天产生的panic信息(前20行):'
cat /var/adm/message* |grep -i panic |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|sed -n '1,20p'

echo ''
echo ''
echo ''
count=$(cat /var/adm/message* |grep -i ERROR |awk '{print $0}'|awk 'END {print NR}')
echo '系统中产生的ERROR的条数:'$count''
echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
count=$(cat /var/adm/message* |grep -i ERROR |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|awk 'END {print 

NR}')
echo '今天产生的ERROR的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
echo '今天产生的ERROR信息(前20行):'
cat /var/adm/message* |grep -i ERROR |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|sed -n '1,20p'



echo ''
echo ''
echo ''
count=$(cat /var/adm/message* |grep -i WARNING |awk '{print $0}'|awk 'END {print NR}')
echo '系统中产生的WARNING的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
count=$(cat /var/adm/message* |grep -i WARNING |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|awk 'END 

{print NR}')
echo '今天产生的WARNING的条数:'$count''


echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
echo '今天产生的WARNING信息(前20行):'
cat /var/adm/message* |grep -i WARNING|awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|sed -n '1,20p'


echo ''
echo ''
echo ''
count=$(cat /var/adm/message* |grep -i fail |awk '{print $0}'|awk 'END {print NR}')
echo '系统中产生的fail的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
count=$(cat /var/adm/message* |grep -i fail |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|awk 'END {print 

NR}')
echo '今天产生的fail的条数:'$count''

echo ''
date1=$(date|awk '{print $2}')
date2=$(date|awk '{print $3}')
echo '今天产生的fail信息(前20行):'
cat /var/adm/message* |grep -i fail |awk '{if ($1~/'$date1'/&&$2~/'$date2'/) print $0}'|sed -n '1,20p'


echo ''
echo ''
echo '**************************************'
echo ''
echo ''
banner "performance"
echo ''
echo ''
echo '**CPU性能、内存使用情况查询**'
echo ''
vmstat 1 10 >/tmp/vmstatinfo
cat /tmp/vmstatinfo 
echo ''
sumcount=$(cat /tmp/vmstatinfo |sed '1,2d'|nawk '{if ($1>=4||$22 <= 70) print $1}'|awk 'END {print NR}')
count1=$(cat /tmp/vmstatinfo |sed '1,2d'|nawk '{if ($1>=4&&$22 >= 70) print $1}'|awk 'END {print NR}')
count2=$(cat /tmp/vmstatinfo |sed '1,2d'|nawk '{if ($1<=4&&$22 <= 70) print $1}'|awk 'END {print NR}')
count3=$(cat /tmp/vmstatinfo |sed '1,2d'|nawk '{if ($1>=4&&$22 <= 70) print $1}'|awk 'END {print NR}')
if [[ $sumcount = 0 ]];then
echo 'CPU使用率正常!!!'
else
echo '共计10次性能搜集,其中  '$sumcount'  次,出现CPU瓶颈问题!!!'
echo '    其中队列等待进程数大于4的  '$count1'  次!!'
echo '    其中cpu空闲的时间小于70%的  '$count2'  次!!'
echo '    其中列等待数大于4伴随cpu空闲时间小于70%的  '$count3'  次!!'
fi

echo ''
echo ''
echo ''
free=$(cat /tmp/vmstatinfo|sed '1,2d'|awk '{print $5}')
freemb=$(for i in $free;do echo $i|awk 'BEGIN{printf "%.2f\n",'$i'/'1024'}';done)
summb=$(prtconf | grep Memory|awk '{print $3}')
sumgb=$(prtconf | grep Memory|awk '{print $3}'|awk 'BEGIN{printf "%.2f\n",'$summb'/'1024'}')
bi=$(for x in $freemb; do echo "scale=3; ($x/$summb)*100"|bc|cut -c 1-2; done)
echo "以上10次统计中,每次统计的内存剩余比例如下:"
echo ''
echo "(**系统物理内存:"$sumgb "Gb**)"
echo ''
for z in $bi
do
echo "内存剩余:$z %"
if [[ $z -gt 20 ]];then
echo '  (内存充足)'
elif [[ $z -gt 10 ]];then
echo '  (内存使用过多)'
else
echo '  (注意:内存不足!!!)'
echo ''
fi
done


echo ''
echo ''
echo ''
echo '**IO性能情况查询**'
echo ''
iostat -xndz 1 10 |grep -v extended|grep -v device >/tmp/iostatinfo
echo "    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device"
cat /tmp/iostatinfo |sed -n '1,20p'
echo ''
sumio=$(cat /tmp/iostatinfo |nawk '{if ($8>=20||$10 >= 70) print $1}'|awk 'END {print NR}')
iocount1=$(cat /tmp/iostatinfo |nawk '{if ($8>=20) print $1}'|awk 'END {print NR}')
iocount2=$(cat /tmp/iostatinfo |nawk '{if ($10 >= 70) print $1}'|awk 'END {print NR}')
if [[ $sumio = 0 ]];then
echo 'IO使用、性能正常!!!'
else
echo '共计 ( '$sumio' ) 次磁盘使用繁忙或性能存在瓶颈!!!'
echo '    其中平均服务时间>=20ms的  '$iocount1'  次!!'
echo '    其中磁盘繁忙成度>=70% 的  '$iocount2'  次!!'
fi

echo ''
echo ''
echo ''
echo "**使用CPU较多的进程**"
echo ''
echo "CPU%  pid"
ps -eo pcpu,pid,args |grep -iv CPU|sort -rn -k1|sed -n '1,3p'
echo ''
echo "**使用内存较多的进程**"
echo ''
echo "MEM%  pid"
ps -efo pmem,pid,uid,pcpu,args |sort -rn -k1 |sed -n '1,3p'
echo ''
echo ''
echo ''
echo "巡检工程师:张小秋 QQ:93865813"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值