脚本如下:
netflow.sh
#!/bin/bash # while true;do ##死循环 R1=`cat /sys/class/net/eth0/statistics/rx_bytes` ##获取eth0的收到流量字节数 T1=`cat /sys/class/net/eth0/statistics/tx_bytes` ##获取eht0发送的流量字节数 # sleep 5 R2=`cat /sys/class/net/eth0/statistics/rx_bytes` ##获取5s后收到的流量字节数 T2=`cat /sys/class/net/eth0/statistics/tx_bytes` ##获取5s后发送出去的流量数 # TBPS=`expr $T2 - $T1` ##相减 RBPS=`expr $R2 - $R1` TKBPS=`expr $TBPS / 10240` ##换算为KB,由于这里应该是除以1024 再处于8 然后再处于2s,所以这里直接就是使用10240,为了简化而已。 RKBPS=`expr $RBPS / 10240` TIME=`date` ##当前时间 sql="insert into linux.netflow(TXBPS,RXBPS,TIME)values($TKBPS,$RKBPS,‘$TIME‘)" mysql -uroot -p123456 -e "$sql" ##将数据插入mysql表中 #mysql -uroot -p123456 -e "select * from linux.netflow" done
netflow.sql ##创建mysql表(ID,TXBPS,RXBPS,TIME)
create database linux; use linux; create table netflow(ID int auto_increment primary key,TXBPS float,RXBPS float,TIME char(10));
使用过程如下:
①执行netflow.sql创建mysql表
[root@node2 ~]# mysql -uroot -p < netflow.sql
②netflow.sh后台运行
[root@node2 ~]# ./netflow.sh & ##&是自己放到后台执行,脚本会不断的获取接口速率,然后保存在mysql中
③编辑php网页,实现web 方式查看流量信息
<?php $conn=mysql_connect("localhost","root","123456"); if($conn) { $sql="select * from linux.netflow limit 10"; $result=mysql_query("$sql"); echo "<center>"; echo "<table border=1>"; echo "<captive>eth0_speed</captive>"; echo "<tr>"; echo "<th>ID</th>"; echo "<th>TIME</th>"; echo "<th>RXBPS</th>"; echo "<th>TXBPS</th>"; echo "</tr>"; while($filter=mysql_fetch_assoc($result)){ echo "<tr>"; echo "<td>$filter[ID]</td>"; echo "<td>$filter[TIME]</td>"; echo "<td>$filter[RXBPS]</td>"; echo "<td>$filter[TXBPS]</td>"; echo "</tr>"; } echo "</table>"; echo "</center>"; } else{ echo failure; } ?>
效果图:
页面较为简单,只是为了演示而已,后续可以进一步强化,可以通过绘图等形式更加直观展示。
本文出自 “Lu2Yu” 博客,请务必保留此出处http://lu2yu.blog.51cto.com/10009517/1633099
原文地址:http://lu2yu.blog.51cto.com/10009517/1633099