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