|
看路由器的web界面太累了,太慢,而且看不到想要的东西,就自己写了一个,今天花了点时间,搞好了,分享给大家:
- <?PHP
- $start_time = microtime_float();
- exec('ifconfig;sleep 1;ifconfig;uptime;free', $result);
- $result = implode("\r\n", $result);
- $uptime_parttern1 = '([\d\:]+) up ([\d\:]+), load average: ([\d\.]+), ([\d\.]+), ([\d\.]+)';
- $uptime_parttern2 = '([\d\:]+) up (\d+) day, (\d+)min, load average: ([\d\.]+), ([\d\.]+), ([\d\.]+)';
- $uptime_parttern3 = '([\d\:]+) up (\d+) day, ([\d\:]+), load average: ([\d\.]+), ([\d\.]+), ([\d\.]+)';
- $free_parttern = '((Mem)|(Swap)|(Total)):\s+(\d+)\s+(\d+)\s+(\d+)(\s+(\d+)\s+(\d+))?';
- $ppp0_parttern = '([^\s]+)\s+Link encap:Point-to-Point Protocol' . "\r\n\s+".
- 'inet addr:([\d\.^\s]+) P-t-P:(([\d\.^\s]+)) Mask:([\d\.^\s]+)' . "\r\n\s+".
- 'UP POINTOPOINT RUNNING PROMISC ALLMULTI MULTICAST MTU:([\d^\s]+) Metric:([\d^\s]+)'.
- 'RX packets:(\d+) errors:(\d+) dropped:(\d+) overruns:(\d+) frame:(\d+)' . "\r\n\s+".
- 'TX packets:(\d+) errors:(\d+) dropped:(\d+) overruns:(\d+) carrier:(\d+)' . "\r\n\s+".
- 'collisions:(\d+) txqueuelen:(\d+)' . "\r\n\s+".
- 'RX bytes:(\d+) \(([\d\.^\s]+) ([a-zA-Z]+)\) TX bytes:(\d+) \(([\d\.^\s]+) ([a-zA-Z]+)\)';
- $if_parttern = '([^\s]+)\s+Link encap:Ethernet HWaddr ([\d\:A-Z]+)' . "\r\n\s+".
- 'UP BROADCAST RUNNING MULTICAST MTU:(\d+) Metric:(\d+)' . "\r\n\s+".
- 'RX packets:(\d+) errors:(\d+) dropped:(\d+) overruns:(\d+) frame:(\d+)' . "\r\n\s+".
- 'TX packets:(\d+) errors:(\d+) dropped:(\d+) overruns:(\d+) carrier:(\d+)' . "\r\n\s+".
- 'collisions:(\d+) txqueuelen:(\d+)' . "\r\n\s+".
- 'RX bytes:(\d+) \(([\d\.]+) ([a-zA-Z]+)\) TX bytes:(\d+) \(([\d\.]+) ([a-zA-Z]+)\)';
- if(preg_match("#$uptime_parttern1#is", $result, $uptime))
- $sysinfo = "系统时间: $uptime[1], 运行时间: $uptime[2], 系统负载: $uptime[3] $uptime[4] $uptime[5], ";
- elseif(preg_match("#$uptime_parttern2#is", $result, $uptime))
- $sysinfo = "系统时间: $uptime[1], 运行时间: {$uptime[2]}天{$uptime[3]}, 系统负载: $uptime[4] $uptime[5] $uptime[6], ";
- elseif(preg_match("#$uptime_parttern3#is", $result, $uptime))
- $sysinfo = "系统时间: $uptime[1], 运行时间: {$uptime[2]}天{$uptime[3]}, 系统负载: $uptime[4] $uptime[5] $uptime[6], ";
- else $sysinfo = '';
- preg_match_all("#$free_parttern#is", $result, $free, PREG_SET_ORDER);
- preg_match_all("#$if_parttern#is", $result, $ifs, PREG_SET_ORDER);
- preg_match_all("#$ppp0_parttern#is", $result, $ppps, PREG_SET_ORDER);
- $end_time = microtime_float();
- echo '<div align="center"><font size="3">';
- echo $sysinfo;
- echo '下载速度:' . sprintf("%.2f", ($ppps[1][20] - $ppps[0][20])/1024) . 'KB/s, ';
- echo '上传速度:' . sprintf("%.2f", ($ppps[1][23] - $ppps[0][23])/1024) . 'KB/s';
- echo '</div><br>';
- echo '
- <style type="text/css">
- /* Global */
- body {
- margin: 0px;
- scrollbar-base-color: #E6E6E6;
- scrollbar-arrow-color: #d3d3d3;
- scrollbar-darkshadow-color: #d3d3d3;
- background-color: #F8F8F8;
- color: #000000;
- }
- body, table, input, select, textarea, .maintable, .button, .altbg1, .altbg2 {
- font: 14px Tahoma, Verdana;
- }
- .category {
- color: #000000;
- background-color: #AABBAA;
- }
- .smalltxt, .category, .percenttxt {
- font: 14px Arial, Tahoma !important;
- font: 13px Arial, Tahoma;
- }
- table {
- margin:5;
- border-collapse:collapse;
- border:#000000 solid;border-width:1 0 0 1
- }
- td {
- padding:5;
- border:#000000 solid;border-width:0 1 1 0
- }
- </style>';
- echo '<div align="center">内存状况</font></div>';
- echo '<table width="98%" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tableborder">';
- echo '<tr class="category" align="center"><td>项目</td><td>总计</td><td>已使用</td><td>剩余</td><td>共享</td><td>缓存</td></tr>';
- echo '<tr class="smalltxt" align="center"><td>' . $free[0][2] . '</td><td>' . $free[0][5] . '</td><td>' . $free[0][6] . '</td><td>' . $free[0][7] . '</td><td>' . $free[0][9] . '</td><td>' . $free[0][10] . '</td></tr>';
- echo '<tr class="smalltxt" align="center"><td>' . $free[1][3] . '</td><td>' . $free[1][5] . '</td><td>' . $free[1][6] . '</td><td>' . $free[1][7] . '</td><td></td><td></td></tr>';
- echo '<tr class="smalltxt" align="center"><td>' . $free[2][4] . '</td><td>' . $free[2][5] . '</td><td>' . $free[2][6] . '</td><td>' . $free[2][7] . '</td><td></td><td></td></tr>';
- echo '</table>';
- echo '<div align="center"><font size="3"><br>流量统计</font></div>';
- echo '<table width="98%" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tableborder">';
- echo '<tr class="category" align="center">
- <td>接口</td><td>硬件地址</td><td>IP地址</td><td>网关</td><td>总接收包数</td><td>总发送包数</td><td>总接收字节</td><td>总发送字节</td><td>下载速度<br>(KB/s)</td><td>上传速度<br>(KB/s)</td>
- </tr>
- ';
- $keys = count($ppps) /2 ;
- for($i = $keys; $i < count($ppps); $i++)
- {
- echo '<tr class="smalltxt" align="center">' . "\r\n";
- echo '<td>' . $ppps[$i][1] . '</td>';
- echo '<td>' . '' . '</td>';
- echo '<td>' . $ppps[$i][2] . '</td>';
- echo '<td>' . $ppps[$i][4] . '</td>';
- echo '<td>' . $ppps[$i][8] . '</td>';
- echo '<td>' . $ppps[$i][13] . '</td>';
- echo '<td>' . $ppps[$i][21] . $ppps[$i][22] . '</td>';
- echo '<td>' . $ppps[$i][24] . $ppps[$i][25] . '</td>';
- echo '<td>' . sprintf("%.2f", ($ppps[$i][20] - $ppps[$i-$keys][20])/1024) . '</td>';
- echo '<td>' . sprintf("%.2f", ($ppps[$i][23] - $ppps[$i-$keys][23])/1024) . '</td>';
- echo '</tr>' . "\r\n";
- }
- $keys = count($ifs) /2 ;
- for($i = $keys; $i < count($ifs); $i++)
- {
- echo '<tr align="center">' . "\r\n";
- echo '<td>' . $ifs[$i][1] . '</td>';
- echo '<td>' . $ifs[$i][2] . '</td>';
- echo '<td>' . '' . '</td>';
- echo '<td>' . '' . '</td>';
- echo '<td>' . $ifs[$i][5] . '</td>';
- echo '<td>' . $ifs[$i][10] . '</td>';
- echo '<td>' . $ifs[$i][18] . $ifs[$i][19] . '</td>';
- echo '<td>' . $ifs[$i][21] . $ifs[$i][22] . '</td>';
- echo '<td>' . sprintf("%.2f", ($ifs[$i][17] - $ifs[$i-$keys][17])/1024) . '</td>';
- echo '<td>' . sprintf("%.2f", ($ifs[$i][20] - $ifs[$i-$keys][20])/1024) . '</td>';
- echo '</tr>' . "\r\n";
- }
- echo '</table>';
- echo '程序耗时:' . ($end_time - $start_time - 1) . '秒';
- //echo '<br><pre>';
- //print_r($uptime);
- //echo $result;
- //echo '</pre>';
- function microtime_float()
- {
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
- }
- ?>
复制代码
效果如下:
[ 本帖最后由 pda8888 于 2008-2-25 10:45 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|