获取linux系统信息的脚本

#!/bin/sh

host=”$1″
method=”$2″
declare -a args=($@)

function Usage()
{
#

   echo “Usage : basename $0 host method args”
   echo “”
}

if [ “$host” == “” ] || [ “$method” == “” ]
then
   Usage

   exit -1
fi

function getCpuNum()
{
   ssh $host cat /proc/cpuinfo | grep “processor” | wc -l
}

#getCpuNum

function getCpus()
{
   num=getCpuNum

   for ((i=0; $i < $num; i=$(($i+1)) ))
   do
       echo -n “$i ”
   done

   echo
}

function getCpuCache()
{
   cache=ssh $host cat /proc/cpuinfo | awk '/cache size/{print($4)}'
   declare -a cache=($cache)
   tmp=””
  
   if [ “$1” != “” ]
   then
       tmp=${cache[“$1”]}
   else
       for ((i=0; $i < ${#cache[*]}; i=$(($i+1)) ))
       do
           tmp=”$tmp ${cache[$i]}”
       done
   fi

   echo $tmp
}

#getCpuCache

function getCpuModel()
{
   model=ssh $host cat /proc/cpuinfo | awk '/^model\t/{print($3)}'

   declare -a model=($model)

   if [ “$1” != “” ]
   then
       echo ${model[“$1”]}
   else
       for ((i=0; $i < ${#model[*]}; i=$(($i+1)) ))
       do
           echo “${model[$i]}”
       done
   fi
}

#getCpuModel 0
#getCpuModel

function getCpuHz()
{
   hz=ssh $host cat /proc/cpuinfo | awk '/^cpu MHz/{print($4)}'

   declare -a hz=($hz)

   if [ “$1” != “” ]
   then
       echo ${hz[“$1”]}
   else
       for ((i=0; $i < ${#hz[*]}; i=$(($i+1)) ))
       do
           echo “${hz[$i]}”
       done
   fi
}

#getCpuHz

function getCpuUsage()
{
   num=$(($1+2))

   times_1=ssh $host cat /proc/stat | awk '{total=0;if(NR == '$num'){for(i=2;i<NF;i++){total+=$i};print((total-$5), total);}}'
   declare -a times_1=($times_1)
   sleep 1
   times_2=ssh $host cat /proc/stat | awk '{total=0;if(NR == '$num'){for(i=2;i<NF;i++){total+=$i};print((total-$5), total);}}'
   declare -a times_2=($times_2)

   used=$((${times_2[0]}-${times_1[0]}))
   total=$((${times_2[1]}-${times_1[1]}))

   echo $(($used*100/$total))
}

#getCpuUsage

function getDiskPart()
{
   part=ssh $host cat /proc/partitions  | awk '{if(NR > 2 && $2 != 0)print($4)}'
   declare -a part=($part)
   tmp=””

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       tmp=”$tmp ${part[$i]}”
   done

   echo $tmp
}

function getDiskPartFree()
{
   arg=”/dev/$1″

   part=ssh $host df $arg | awk 'NR > 1{if(NR = 2){print($4);}}'
   declare -a part=($part)
   tmp=””

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       tmp=”$tmp ${part[$i]}”
   done

   echo $tmp
}

function getDiskPartTotal()
{
   arg=”/dev/$1″

   part=ssh $host df $arg | awk 'NR > 1{if(NR = 2){print($2);}}'
   declare -a part=($part)
   tmp=””

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       tmp=”$tmp ${part[$i]}”
   done

   echo $tmp
}

function getDiskPartUsage()
{
   arg=”/dev/$1″

   part=ssh $host df $arg | awk 'NR > 1{if(NR = 2){print(substr($5,0,length($5)-1));}}'
   declare -a part=($part)
   tmp=””

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       tmp=”$tmp ${part[$i]}”
   done

   echo $tmp
}

function getDiskRoot()
{
   ssh $host mount | awk ‘/on \/ /{print($1)}’
}

#getDiskRoot

function getDiskTotal()
{
   part=ssh $host df | awk '/\//{print($2)}'
   declare -a part=($part)
  
   total=0

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       total=$(($total+${part[$i]}))
   done

   echo $total
}

#getDiskTotal

function getDiskUsed()
{
   part=ssh $host df | awk '/\//{print($3)}'
   declare -a part=($part)
  
   total=0

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       total=$(($total+${part[$i]}))
   done

   echo $total
}

#getDiskUsed

function getDiskFree()
{
   part=ssh $host df | awk '/\//{print($4)}'
   declare -a part=($part)
  
   total=0

   for ((i=0; $i < ${#part[*]}; i=$(($i+1)) ))
   do
       total=$(($total+${part[$i]}))
   done

   echo $total
}

function getDiskUsage()
{
   echo $((getDiskUsed*100/getDiskTotal))
}

function getLoads()
{
   ssh $host cat /proc/loadavg | awk ‘{print($1,$2,$3)}’
}

function getLoad()
{
   loads=getLoads
   declare -a loads=($loads)

   if [ “$1” != “” ] && [ “$1” -le ${#loads[*]} ]
   then
       echo ${loads[$1]}
   fi
}

#getLoad

function getMemInfo()
{
   ssh $host free | awk ‘/Mem:/{print($2,$3,$4)}’
}

#getMemInfo

function getMemTotal()
{
   mem=getMemInfo
   declare -a mem=($mem)

   echo ${mem[0]}
}

#getMemTotal

function getMemUsed()
{
   mem=getMemInfo
   declare -a mem=($mem)

   echo ${mem[1]}
}

function getMemUsage()
{
   echo $((getMemUsed*100/getMemTotal))
}

function getMemFree()
{
   mem=getMemInfo
   declare -a mem=($mem)

   echo ${mem[2]}
}

function getUptime()
{
   ssh $host cat /proc/uptime | awk ‘{print($1)}’   
}

function getOSKV()
{
   ssh $host cat /proc/version | awk ‘{print($3)}’
}

#getOSKV

function getOSEdition()
{
   ssh $host lsb_release -a | awk ‘/Distributor ID/{print($3,$4)}’
}

#getOSEdtion

function getNic()
{
   nic=ssh $host cat /proc/net/dev | awk '/:/{print($1)}'
   declare -a nic=($nic)
   tmp=””

   for ((i=0; $i < ${#nic[*]}; i=$(($i+1)) ))
   do
       tmp=”$tmp ${nic[$i]%%:*}”
   done

   echo $tmp
}

#getNic

function getIP()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/inet addr/{print($2)}'
               echo ${ip##*addr:}

               continue
           fi
       done
   done

   echo $tmp
}

#getIP eth1

function getMAC()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/HWaddr/{print($5)}'
               tmp=”$tmp $ip”

               continue
           fi
       done
   done

   echo $tmp
}

#getMAC eth1 eth0

function getMask()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               eth=”${args[$i]}”
               ip=ssh $host ifconfig $eth | awk '/Mask/{if("'$eth'" == "lo"){print($3);}else{print($4);}}'
               tmp=”$tmp ${ip##*Mask:}”

               continue
           fi
       done
   done

   echo $tmp
}

#getMask eth0

function getRxB()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/RX bytes:/{print($2)}'
               tmp=”$tmp ${ip##*bytes:}”

               continue
           fi
       done
   done

   echo $tmp
}

#getRxB eth0

function getRxBs()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               rat=getRxB ${args[$i]}
               sleep 1
               rat=$((getRxB ${args[$i]}-$rat))

               tmp=”$tmp $rat”

               continue
           fi
       done
   done

   echo $tmp
}

#getRxBs eth1

function getRxP()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/RX packets:/{print($2)}'
               tmp=”$tmp ${ip##*packets:}”

               continue
           fi
       done
   done

   echo $tmp
}

#getRxP eth0

function getRxPs()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               rat=getRxP ${args[$i]}
               sleep 1
               rat=$((getRxP ${args[$i]}-$rat))

               tmp=”$tmp $rat”

               continue
           fi
       done
   done

   echo $tmp
}

function getTxB()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/TX bytes:/{print($6)}'
               tmp=”$tmp ${ip##*bytes:}”

               continue
           fi
       done
   done

   echo $tmp
}

function getTxBs()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               rat=getTxB ${args[$i]}
               sleep 1
               rat=$((getTxB ${args[$i]}-$rat))

               tmp=”$tmp $rat”

               continue
           fi
       done
   done

   echo $tmp
}

#getTxB eth0

function getTxP()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/TX packets:/{print($2)}'
               tmp=”$tmp ${ip##*packets:}”

               continue
           fi
       done
   done

   echo $tmp
}

function getTxPs()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               rat=getTxP ${args[$i]}
               sleep 1
               rat=$((getTxP ${args[$i]}-$rat))

               tmp=”$tmp $rat”

               continue
           fi
       done
   done

   echo $tmp
}

function getNicType()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               ip=ssh $host ifconfig ${args[$i]} | awk '/Link encap:/'
               ip=${ip##*encap:}
               tmp=”$tmp ${ip%%HWaddr*}”

               continue
           fi
       done
   done

   echo $tmp
}

#getNicType eth0 lo

function getGW()
{
   ips=getNic
   declare -a ips=($ips)
   declare -a args=($@)
   tmp=””

   for ((i=0; $i < $#; i=$(($i+1)) ))
   do
       for ((j=0; $j < ${#ips[*]}; j=$(($j+1)) ))
       do
           if [ ${ips[$j]} == ${args[$i]} ]
           then
               gw=ssh $host route | awk '/Link encap:/'
               echo $gw

               continue
           fi
       done
   done

   echo $tmp
}

function main()
{
   argv=””

   for ((i=2; $i < ${#args[*]}; i=$(($i+1)) ))
   do
       argv=”$argv ${args[$i]}”
   done

   funcs=cat "$0" | awk '/function/{print(substr($2,0,length($2)-2))}'
   declare -a funcs=($funcs)

   for ((i=0; $i < ${#funcs[*]}; i=$(($i+1)) ))
   do
       func=”${funcs[$i]}”
      
       if [ ${#funcs} -gt 3 ] && [ ${func:0:3} == “get” ] && [ “$method” == “$func” ]
       then
           $func $argv

           break
       fi
   done
}

main

发表评论

电子邮件地址不会被公开。 必填项已用*标注