zoukankan      html  css  js  c++  java
  • xenserver 主机网卡使用情况

    #! /bin/sh
    #this script for get xenserver 6.5 7.0  network useage
    #xen-host-network.sh v0.02
    #send xen-host-network.sh to xenserver use ftp or ssh first  ./xen-host-network.sh
    #date:  2016-08-12  hayden
    #yelang007sheng@163.com
    
    log=`date "+%H_%M_%S"`
    mkdir -p /tmp/"$log"
    
    get_iface(){
      sar -n DEV 1 1 |grep -i Average |awk '{print $2}' >iface.tmp
      sed -i '1d' iface.tmp
      iface=`cat iface.tmp`
      echo $iface |tr '
    ' ' ' >iface.tmp
      iface=`cat iface.tmp`
    }
    
    net_unit(){
      if [ `sar -n DEV 1 1 |grep -i Average |head -n 1 | grep -c "kB/s"`  -eq 1 ]; then
        net_unit="kB/s"
      elif [ `sar -n DEV 1 1 |grep -i Average |head -n 1 |grep -c "byt/s"` -eq 1 ]; then
        net_unit="byt/s"
      else
        net_unit=unknow
        echo "Please check sar command network unit for rx and tx "
        exit 1
      fi
    }
    
    
    monitor_time(){
    #for((;;))
    while :
    do
      get_iface
      read -p "Please input monitor network intface id: [ $iface ]: " eth
      if [ `cat iface.tmp |grep -c "$eth>"` -ne 1 ];then
        echo "IFACE input error!!!"
        continue
      fi
      read -p "Please input monitor each time:[ second exp: 1 2 5 .... ] " time
      read -p "Please input monitor count: [ count exp: 10 100 1000 .. ] " count
      if [ `echo "$time" |grep -c '[^0-9]'` -ne 0 ] || [ `echo "$count" |grep -c '[^0-9]'` -ne 0 ]; then
        echo "Input each time or count error!!!"
        continue
      else
         if [ "$time" -gt 0 ] && [ "$count" -gt 0 ]; then
            break
         else
            echo "Input each time or count error!!!"
            continue
         fi
      fi
    done
    wait_t=`echo "$time * $count" |bc`
    echo "Monitor start... Please wait $wait_t second!!!"
    }
    
    get_net_data(){
      time_t=$1
      count_t=$2
      sar -n DEV 1 1 |grep -i Average |head -n 1 |sed s'/Average:/Items    /' > "$eth"_"$log"
      sar -n DEV $time_t $count_t |grep "$eth" |sed 's/ AM/_AM/g' |sed 's/ PM/_PM/g' >> "$eth"_"$log" 
      cp "$eth"_"$log" /tmp/"$log"
    }
    
    get_net_value(){
      sed -i '1d' "$eth"_"$log"
      cat "$eth"_"$log" |awk '{print $5+$6}'|awk '{printf "%.2f
    ",$0}'>"$eth"_temp
      avg_value=`cat "$eth"_temp |tail -n 1`
      min_value=`cat "$eth"_temp |sort -n |head -n 1`
      max_value=`cat "$eth"_temp |sort -n |tail -n 1`
      
    }
    
    KBs_to_Mbs(){
      value=$1
      value=`echo "scale=4; $value * 8 / 1024"|bc |awk '{printf"%.4f", $0}'`
    }
    
    byts_to_Mbs(){
      value=$1
      value=`echo "scale=4; $value *8 / 1024 / 1024"|bc |awk '{printf"%.4f", $0}'`
    }
    
    #main
    net_unit
    monitor_time
    get_net_data "$time" "$count"
    get_net_value
    if [ "$net_unit" == "kB/s" ]; then
      KBs_to_Mbs "$avg_value"
      avg_value_Mbs="$value"
      
      KBs_to_Mbs "$min_value"
      min_value_Mbs="$value"
      
      KBs_to_Mbs "$max_value"
      max_value_Mbs="$value"
      
    elif [ "$net_unit" == "byt/s" ]; then
      byts_to_Mbs "$avg_value"
      avg_value_Mbs="$value"
      
      byts_to_Mbs "$min_value"
      min_value_Mbs="$value"
      
      byts_to_Mbs "$max_value"
      max_value_Mbs="$value"
    
    else
     echo "error!!!"
     exit 1 
    fi
    
    echo "$eth"_avg = "$avg_value_Mbs"Mb/s |tee -a result_"$eth"_"$log" 
    echo "$eth"_min = "$min_value_Mbs"Mb/s |tee -a result_"$eth"_"$log" 
    echo "$eth"_max = "$max_value_Mbs"Mb/s |tee -a result_"$eth"_"$log" 
    mv result_"$eth"_"$log" /tmp/"$log"
    rm -rf 
    
    #rm -rf "$eth"_"$log" "$eth"_temp1 "$eth"_temp2 iface.tmp
    rm -rf "$eth"_"$log" "$eth"_temp iface.tmp 
  • 相关阅读:
    摘录的WinForm Control 开发3,crystalbutton
    摘录的WinForm Control 开发2,CustomColorCheckBox,CustomColorRadioButton
    摘录的WinForm Control 开发4,控件总结
    linq to sql 简单小结:
    摘录的WinForm Control 开发5,WinForm 开发:FlashGetFormDemos ,类似FlashGet的悬浮窗
    SerialPort 的使用
    摘录的WinForm Control 开发5,WinForm 开发:MultipLanguageDemos ,多国语言开发
    摘录的WinForm Control 开发5,WinForm 开发:UnRegularFormDemos ,不规则窗体
    摘录的WinForm control 开发1..BorderLabel
    jquery上传插件(uploadify)的使用
  • 原文地址:https://www.cnblogs.com/hayden1106/p/8005519.html
Copyright © 2011-2022 走看看