脚本如下:
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;
}
?>
效果图:
页面较为简单,只是为了演示而已,后续可以进一步强化,可以通过绘图等形式更加直观展示。
转载于:https://blog.51cto.com/lu2yu/1633099