shell+awk web报表
说明:蓝色=命令名称浅绿=命令参数
浅蓝=选项
紫色=目录
系统环境:CentOS5.8x86_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 报表,可配合上面脚本数据源。
效果图:
页:
[1]