|
说明:蓝色=命令名称
浅绿=命令参数
浅蓝=选项
紫色=目录
系统环境:CentOS 5.8 x86_64
朋友让帮谢了一个生成报表的shell,感觉很有意思发出来大家讨论讨论。
总共三个文件如下图:
iplist
- #group1
- 192.168.1.1
- 192.168.1.2
- #group2
- 192.168.1.3
- 192.168.1.4
myreport.sh
- #!/bin/bash
- vmstat 1 2|awk '{cpuidel=$(NF-2);iowait=$(NF-1)}END{printf("cpuidel=%s iowait=%s",cpuidel,iowait)}'
- awk '{printf " loadavg="$1}' /proc/loadavg
- awk -F"[ :]+" 'NR==5{printf " swap="$2/1024}' /proc/meminfo
- netstat -an|awk '/^tcp/{a[$6]++}END{printf " max_conn="a["ESTABLISHED"]}'
- printf "\n"
report.sh
- #!/bin/bash
- export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/php/bin:/root/bin:/home/tangweizhong/shell/bin
- DATE=`date +%F`
- MONTH=`date +%m`
- YEAR=`date +%Y`
- rm -f system-report-$DATE.html
- for ip in `awk 'BEGIN{RS="#";FS="\n"}NR>1{i=1;while(++iidle?$NF:idle;
- iowait=$5>iowait?$5:iowait
- }else
- break
- }
- }/run/{
- while(1){
- getline;
- if($0!=""&&NR!=a){
- loadavg=$NF>loadavg?$NF:loadavg
- }else{
- break
- }
- ;a=NR
- }
- }/IFACE.*rxmcst/{
- while(1){
- getline;
- if($0!=""){
- rxbyt=$5>rxbyt?$5:rxbyt;
- txbyt=$6>txbyt?$6:txbyt}else break
- }
- }/kbmemfree/{
- while(1){
- getline;if($0!=""){
- swap=$9>swap?$9:swap
- }else
- break
- }
- }END{
- printf("idle=%s iowait=%s loadavg=%s rxbyt=%s txbyt=%s swap=%s\n",idle,iowait,loadavg,rxbyt,txbyt,swap)
- }' 报表文件
本脚本用来分析sar 报表,可配合上面脚本数据源。
效果图:
|
|
|