فهرست منبع

support Enterprise Linux

Enterprise Linux distributions such as Red Hat
have a slightly different /proc/net/dev file
format than Debian systems. The difference is
that it is possible for no whitespace to be between
the interface name and the bytes field e.g.
eth0:132342342342 23234222 ...

Debian systems always have the whitespace separator
and pps was written on a Debian system:
eth1: 20607859609382 39372141253

This throws off awk's field numbers. This patch
takes account of this.
Jon Schipp 12 سال پیش
والد
کامیت
38257379c9
1فایلهای تغییر یافته به همراه8 افزوده شده و 8 حذف شده
  1. 8 8
      check_pps.sh

+ 8 - 8
check_pps.sh

@@ -54,26 +54,26 @@ get_network_data() {
 		speed=$(cat /sys/class/net/$INT/speed)
 
 		# Get number of packets for interface
-		rxppsold=$(awk "/$INT/ "'{ print $3 }' /proc/net/dev)
-		txppsold=$(awk "/$INT/ "'{ print $11 }' /proc/net/dev)
+		rxppsold=$(awk "/$INT/ "'{ sub(":", " "); print $3 }' /proc/net/dev)
+		txppsold=$(awk "/$INT/ "'{ sub(":", " "); print $11 }' /proc/net/dev)
 
 		# Get number of bytes for interface
-		rxbytesold=$(awk "/$INT/ "'{ print $2 }' /proc/net/dev)
-		txbytesold=$(awk "/$INT/ "'{ print $10 }' /proc/net/dev)
+		rxbytesold=$(awk "/$INT/ "'{ sub(":", " "); print $2 }' /proc/net/dev)
+		txbytesold=$(awk "/$INT/ "'{ sub(":", " "); print $10 }' /proc/net/dev)
 
 		sleep $INTERVAL
 
 		# Get number of packets for interface again and subtract from old
 		rxppsnew=$(awk -v rxppsold="$rxppsold" "/$INT/ "'{ \
-			rxppsnew = $3; print rxppsnew - rxppsold }' /proc/net/dev)
+			sub(":", " "); rxppsnew = $3; print rxppsnew - rxppsold }' /proc/net/dev)
 		txppsnew=$(awk -v txppsold="$txppsold" "/$INT/ "'{ \
-			txppsnew = $11; print txppsnew - txppsold }' /proc/net/dev)
+			sub(":", " "); txppsnew = $11; print txppsnew - txppsold }' /proc/net/dev)
 
 		# Get number of bytes for interface again and subtract from old
 		rxbytesnew=$(awk -v rxbytesold="$rxbytesold" "/$INT/ "'{ \
-			rxbytesnew = $2; print rxbytesnew - rxbytesold }' /proc/net/dev)
+			sub(":", " "); rxbytesnew = $2; print rxbytesnew - rxbytesold }' /proc/net/dev)
 		txbytesnew=$(awk -v txbytesold="$txbytesold" "/$INT/ "'{ \
-			txbytesnew = $10; print txbytesnew - txbytesold }' /proc/net/dev)
+			sub(":", " "); txbytesnew = $10; print txbytesnew - txbytesold }' /proc/net/dev)
 
 		# Calculate percentage of line-rate from number of bytes per second.
 		rxlinerate=$(echo "$rxbytesnew / 125000 / $speed * 100" | bc -l)