bashスクリプト

5955 ワード

#!/bin/bash

# system info report

def_colors () {
    # Attributes
    normal='\033[0m'; bold='\033[1m'; dim='\033[2m'; under='\033[4m'
    italic='033[3m';  notalic='\033[23m'; blink='\033[5m';
    reverse='\033[7m'; conceal='\033[8m'; nobold='\033[22m';
    nounder='\033[24m'; noblink='\033[25m'

    # Foreground
    black='\033[30m'; red='\033[31m'; green='\033[32m'; yellow='\033[33m'
    blue='\033[34m'; magenta='\033[35m'; cyan='\033[36m'; white='\033[37m'

    # Background
    bblack='\033[40m'; bred='\033[41m'
    bgreen='\033[42m'; byellow='\033[43m'
    bblue='\033[44m'; bmagenta='\033[45m'
    bcyan='\033[46m'; bwhite='\033[47m'
}

def_colors

clear

hostname=`cat /proc/sys/kernel/hostname`
echo
echo -e "System Report for $yellow$hostname$normal on `date`"
echo

prcessor=`grep 'model name' /proc/cpuinfo | cut -d: -f2 | cut -c2-`
nisdomain=`cat /proc/sys/kernel/domainname`

cache=`grep 'cache size' /proc/cpuinfo | awk '{print $4, $5}'`
bogomips=`grep 'bogomips' /proc/cpuinfo | awk '{print $3}'`
vendor=`grep 'vendor_id' /proc/cpuinfo`

echo -e "Hostname: $yellow$hostname$normal NIS Domain: $white$nisdomain$normal"

if [ "`echo $vedner | grep -i intel`" ]
then
    cpu_color=$blue
elif [ "`echo $vender | grep -i amd`" ]
then
    cpu_color=$green
fi

echo -e "Processor: $cpu_color$processor$normal"
echo -e "Running at $white$bogomips$normal bogomips with $white$cache$normal cache"
echo

ostype=`cat /proc/sys/kernel/ostype`
osrelease=`cat /proc/sys/kernel/osrelease`
rev=`cat /proc/sys/kernel/version | awk '{print $1}'`
da_date=`cat /proc/sys/kernel/version | cut -d\  -f2-`
upsec=`awk '{print $1}' /proc/uptime`
uptime=`echo "scale=2;$upsec/86400" | bc`

echo -e "OS Type: $white${ostype}$normal"
echo -e "Kernel:  $white${osrelease}$normal"
echo -e "Kernel Compile $white${rev}$normal on $white${da_date}$normal"
echo -e "Uptime: $magenta${uptime}$normal days"

echo 
echo -e "${red}Network Statistics:${normal}"
echo "-------------------"
iface_list=`ip addr |grep -A1 -B1 "link/ether"`

echo ${iface_list} |awk '{
if (NF == 0) {
  print "No Network Info";
} else {
  num_of_iface = int(NF / 22);
  for (i = 1; i <= num_of_iface; i++) {
    print $(23*i-21), $(23*i-10), $(23*i-6);
  }
  }
}'

echo
echo -e "${red}Memory Statistics:${normal}"
echo "------------------"

# statistics the memory info
set `grep MemTotal /proc/meminfo`
tot_mem=$2; 
tot_mem_unit=$3

set `grep MemFree /proc/meminfo`
free_mem=$2; 
fre_mem_unit=$3
perc_mem_used=$((100-(100*free_mem/tot_mem)))

set `grep SwapTotal /proc/meminfo`
tot_swap=$2; 
tot_swap_unit=$3

set `grep SwapFree /proc/meminfo`
free_swap=$2
free_swap_unit=$3
perc_swap_used=$((100-(100*free_swap/tot_swap)))

if [ $perc_mem_used -lt 80 ]
then
    mem_color=$green
elif [ $perc_mem_used -ge 80 -a $perc_mem_used -lt 90 ]
then
    mem_color=$yellow
else
    mem_color=$red
fi

if [ $perc_swap_used -lt 80 ]
then
    swap_color=$green
elif [ $perc_swap_used -ge 80 -a $perc_swap_used -lt 90 ]
then
    swap_color=$yellow
else
    swap_color=$red
fi

echo -e "Memory:
-------
Total:\t$white${tot_mem}$normal ${tot_mem_unit}
Free:\t$white${free_mem}$normal ${fre_mem_unit}
Used:\t${mem_color}${perc_mem_used}%$normal" echo echo -e "Swap:
-----
Total:\t$white${tot_swap}$normal ${tot_swap_unit}
Free:\t$white${free_swap}$normal ${free_swap_unit}\ ${fre_swap_unit}
Used:\t${swap_color}${perc_swap_used}%$normal" echo # statistics the load average info set `cat /proc/loadavg` one_min=$1 five_min=$2 fifteen_min=$3 echo -e "${red}Load Adverage:${normal}" echo "---------------" echo "1min 5min 15min" echo "---- ---- -----" for ave in $one_min $five_min $fifteen_min do     int_ave=`echo $ave | cut -d. -f1`     if [ $int_ave -lt 1 ]     then         echo -en "$green$ave$normal "     elif [ $int_ave -ge 1 -a $int_ave -lt 5 ]     then         echo -en "$yellow$ave$normal "     else         echo -en "$red$ave$normal"     fi done echo # statistics the process info running=0; sleeping=0; stopped=0; zombie=0 for pid in /proc/[1-9]* do     procs=$((procs+1))     stat=`awk '{print $3}' ${pid}/stat`     case $stat in         R) running=$((running+1))            ;;     S) sleeping=$((sleeping+1))            ;;         T) stopped=$((stopped+1))            ;;         Z) zombie=$((zombie+1))            ;;     esac done echo  echo -e "${red}Process Counting:${normal}" echo "-----------------" echo -e "$white${procs}$normal \t total
$white$running$normal \t running
\ $white${sleeping}$normal \t sleeping
$white${stopped}$normal \t stopped
\ $white$zombie$normal \t zombie" echo

実行結果:
# bash sys_info.sh 

System Report for master on Thu Oct 15 08:33:02 CST 2015

Hostname: master NIS Domain: (none)
Processor: 
Running at 4389.86 bogomips with 3072 KB cache

OS Type: Linux
Kernel:  2.6.32-573.3.1.el6.x86_64
Kernel Compile #1 on SMP Thu Aug 13 22:55:16 UTC 2015
Uptime: .06 days

Network Statistics:
-------------------
eth0: 08:00:27:00:00:00 10.11.1.51/24
eth1: 08:00:27:00:00:01 192.168.56.108/24

Memory Statistics:
------------------
Memory:
-------
Total:	1020176 kB
Free:	499448 kB
Used:	52%

Swap:
-----
Total:	1015804 kB
Free:	1015804 kB
Used:	0%

Load Adverage:
---------------
1min 5min 15min
---- ---- -----
0.06 0.02 0.00 

Process Counting:
-----------------
104 	 total
0 	 running
104 	 sleeping
0 	 stopped
0 	 zombie