果果、 发表于 2018-8-21 12:58:51

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]
查看完整版本: shell+awk web报表