Guest User

Raspberry Pi Sysinfo Script

a guest
Oct 25th, 2012
743
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.     header("Cache-Control: no-cache, must-revalidate");
  3.     header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
  4.     header("Pragma: no-cache");
  5.  
  6.     function NumberWithCommas($in)
  7.     {
  8.         return number_format($in);
  9.     }
  10.     function  WriteToStdOut($text)
  11.     {
  12.         $stdout = fopen('php://stdout','w') or die($php_errormsg);
  13.         fputs($stdout, "\n" . $text);
  14.     }
  15.    
  16.     $current_time = exec("date +'%d %b %Y<br />%T %Z'");
  17.     $frequency = NumberWithCommas(exec("cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq") / 1000);
  18.     $processor = str_replace("-compatible processor", "", explode(": ", exec("cat /proc/cpuinfo | grep Processor"))[1]);
  19.     $cpu_temperature = round(exec("cat /sys/class/thermal/thermal_zone0/temp ") / 1000, 1);
  20.     //$RX = exec("ifconfig eth0 | grep 'RX bytes'| cut -d: -f2 | cut -d' ' -f1");
  21.     //$TX = exec("ifconfig eth0 | grep 'TX bytes'| cut -d: -f3 | cut -d' ' -f1");
  22.     list($system, $host, $kernel) = split(" ", exec("uname -a"), 4);
  23.    
  24.     //Uptime
  25.     $uptime_array = explode(" ", exec("cat /proc/uptime"));
  26.     $seconds = round($uptime_array[0], 0);
  27.     $minutes = $seconds / 60;
  28.     $hours = $minutes / 60;
  29.     $days = floor($hours / 24);
  30.     $hours = sprintf('%02d', floor($hours - ($days * 24)));
  31.     $minutes = sprintf('%02d', floor($minutes - ($days * 24 * 60) - ($hours * 60)));
  32.     if ($days == 0):
  33.         $uptime = $hours . ":" .  $minutes . " (hh:mm)";
  34.     elseif($days == 1):
  35.         $uptime = $days . " day, " .  $hours . ":" .  $minutes . " (hh:mm)";
  36.     else:
  37.         $uptime = $days . " days, " .  $hours . ":" .  $minutes . " (hh:mm)";
  38.     endif;
  39.    
  40.     // load averages
  41.     $loadavg = file("/proc/loadavg");
  42.     if (is_array($loadavg)) {
  43.         $loadaverages = strtok($loadavg[0], " ");
  44.         for ($i = 0; $i < 2; $i++) {
  45.             $retval = strtok(" ");
  46.             if ($retval === FALSE) break; else $loadaverages .= " " . $retval;
  47.         }
  48.     }
  49.    
  50.     //Memory Utilisation
  51.     $meminfo = file("/proc/meminfo");
  52.     for ($i = 0; $i < count($meminfo); $i++)
  53.     {
  54.         list($item, $data) = split(":", $meminfo[$i], 2);
  55.         $item = trim(chop($item));
  56.         $data = intval(preg_replace("/[^0-9]/", "", trim(chop($data)))); //Remove non numeric characters
  57.         switch($item)
  58.         {
  59.             case "MemTotal": $total_mem = $data; break;
  60.             case "MemFree": $free_mem = $data; break;
  61.             case "SwapTotal": $total_swap = $data; break;
  62.             case "SwapFree": $free_swap = $data; break;
  63.             case "Buffers": $buffer_mem = $data; break;
  64.             case "Cached": $cache_mem = $data; break;
  65.             default: break;
  66.         }
  67.     }
  68.     $used_mem = $total_mem - $free_mem;
  69.     $used_swap = $total_swap - $free_swap;
  70.     $percent_free = round(($free_mem / $total_mem) * 100);
  71.     $percent_used = round(($used_mem / $total_mem) * 100);
  72.     $percent_swap = round((($total_swap - $free_swap ) / $total_swap) * 100);
  73.     $percent_swap_free = round(($free_swap / $total_swap) * 100);
  74.     $percent_buff = round(($buffer_mem / $total_mem) * 100);
  75.     $percent_cach = round(($cache_mem / $total_mem) * 100);
  76.     $used_mem = NumberWithCommas($used_mem);
  77.     $used_swap = NumberWithCommas($used_swap);
  78.     $total_mem = NumberWithCommas($total_mem);
  79.     $free_mem = NumberWithCommas($free_mem);
  80.     $total_swap = NumberWithCommas($total_swap);
  81.     $free_swap = NumberWithCommas($free_swap);
  82.     $buffer_mem = NumberWithCommas($buffer_mem);
  83.     $cache_mem = NumberWithCommas($cache_mem);
  84.     //Disk space check
  85.     exec("df -T -l -BM -x tmpfs -x devtmpfs -x rootfs", $diskfree);
  86.     $count = 1;
  87.     while ($count < sizeof($diskfree))
  88.     {
  89.         list($drive[$count], $typex[$count], $size[$count], $used[$count], $avail[$count], $percent[$count], $mount[$count]) = split(" +", $diskfree[$count]);
  90.         $percent_part[$count] = str_replace( "%", "", $percent[$count]);
  91.         $count++;
  92.     }
  93. ?>
  94. <!DOCTYPE html>
  95. <html lang="en">
  96.     <head>
  97.         <title>Andrew&apos;s Raspberry Pi</title>
  98.         <!-- <meta http-equiv="refresh" content="60" /> -->
  99.         <style type="text/css">
  100.             a
  101.             {
  102.                 color:black;
  103.                 padding-top:5px;
  104.                 display:block;
  105.             }
  106.             a:hover
  107.             {
  108.                 text-decoration:none;
  109.             }
  110.             td
  111.             {
  112.                 font-family:"DejaVu Sans",Arial,Helvetica,sans-serif;
  113.                 font-size:12px;
  114.                 vertical-align:top;
  115.                 padding-left:2px;
  116.                 padding-right:2px;
  117.                 background:#FFFFFF;
  118.             }
  119.             p
  120.             {
  121.                 font-family:"DejaVu Sans", Arial, Helvetica, sans-serif;
  122.                 font-size:12px;
  123.             }
  124.             h1
  125.             {
  126.                 font-family:"DejaVu Sans", Arial, Helvetica, sans-serif;
  127.                 font-size:20px;
  128.             }
  129.             td.center
  130.             {
  131.                 text-align:center;
  132.             }
  133.             td.head
  134.             {
  135.                 font-weight:bold;
  136.                 padding-top:3px;
  137.                 padding-bottom:3px;
  138.             }
  139.             td.right
  140.             {
  141.                 text-align:right;
  142.                 padding-right:6px;
  143.             }
  144.             table
  145.             {
  146.                 width: 320px; border-spacing:0;
  147.                 border-collapse:collapse;
  148.             }
  149.             html,body,.darkbackground
  150.             {
  151.                 background:#CCCCCC;
  152.             }
  153.             body
  154.             {
  155.                 color:#000000;
  156.             }
  157.             td.column1
  158.             {
  159.                 width:60px;
  160.             }
  161.             td.column3
  162.             {
  163.                 width:120px;
  164.             }
  165.             td.column4
  166.             {
  167.                 width:30px;
  168.             }
  169.             div#bar1, div#bar2, div#bar3, div#bar4, div#bar5, div#bar6
  170.             {
  171.                 height:12px;
  172.                 width:0px;
  173.                 transition:width 2s;
  174.                 <?php
  175.                     $agent = "";
  176.                     if(isset($_SERVER['HTTP_USER_AGENT']))
  177.                     {
  178.                         $agent = $_SERVER['HTTP_USER_AGENT'];
  179.                     }
  180.                     if(strlen(stristr($agent,"applewebkit")) > 0 ) echo "\n\t\t\t\t-webkit-transition:width 2s;\n";
  181.                     else if(strlen(stristr($agent,"gecko")) > 0 ) echo "\n\t\t\t\t-moz-transition:width 2s;\n";
  182.                     else if(strlen(stristr($agent,"opera")) > 0 ) echo "\n\t\t\t\t-o-transition:width 2s;\n";
  183.                 ?>
  184.             }
  185.             div#bar1 { background-color:#D78787; }
  186.             div#bar2 { background-color:#AFD787; }
  187.             div#bar3 { background-color:#F7F7AF; }
  188.             div#bar4 { background-color:#87AFD7; }
  189.             div#bar5 { background-color:#D7AFD7; }
  190.             div#bar6 { background-color:#AFD7D7; }
  191.         </style>
  192.         <script type="text/javascript">
  193.             function updateText(objectId, text)
  194.             {
  195.                 document.getElementById(objectId).textContent = text;
  196.             }
  197.             function updateHTML(objectId, html)
  198.             {
  199.                 document.getElementById(objectId).innerHTML = html;
  200.             }
  201.             function updateDisplay()
  202.             {
  203. <?php
  204.                 echo "\n\t\t\t\tupdateText(\"host\",\"$host\");";
  205.                 echo "\n\t\t\t\tupdateHTML(\"time\",\"$current_time\");";
  206.                 echo "\n\t\t\t\tupdateText(\"kernel\",\"$system\" + \" \" + \"$kernel\");";
  207.                 echo "\n\t\t\t\tupdateText(\"processor\",\"$processor\");";
  208.                 echo "\n\t\t\t\tupdateText(\"freq\",\"$frequency\" + \"MHz\");";
  209.                 echo "\n\t\t\t\tupdateText(\"loadavg\",\"$loadaverages\");";
  210.                 echo "\n\t\t\t\tupdateText(\"cpu_temperature\",\"$cpu_temperature\" + \"°C\");";
  211.                 echo "\n\t\t\t\tupdateText(\"uptime\",\"$uptime\");";
  212.  
  213.                 echo "\n\t\t\t\tupdateText(\"total_mem\",\"$total_mem\" + \" kB\");";
  214.                 echo "\n\t\t\t\tupdateText(\"used_mem\",\"$used_mem\" + \" kB\");";
  215.                 echo "\n\t\t\t\tupdateText(\"percent_used\",\"$percent_used%\");";
  216.                 echo "\n\t\t\t\tupdateText(\"free_mem\",\"$free_mem\" + \" kB\");";
  217.                 echo "\n\t\t\t\tupdateText(\"percent_free\",\"$percent_free%\");";
  218.                 echo "\n\t\t\t\tupdateText(\"buffer_mem\",\"$buffer_mem\" + \" kB\");";
  219.                 echo "\n\t\t\t\tupdateText(\"percent_buff\",\"$percent_buff%\");";
  220.                 echo "\n\t\t\t\tupdateText(\"cache_mem\",\"$cache_mem\" + \" kB\");";
  221.                 echo "\n\t\t\t\tupdateText(\"percent_cach\",\"$percent_cach%\");";
  222.  
  223.                 echo "\n\t\t\t\tupdateText(\"total_swap\",\"$total_swap\" + \" kB\");";
  224.                 echo "\n\t\t\t\tupdateText(\"used_swap\",\"$used_swap\" + \" kB\");";
  225.                 echo "\n\t\t\t\tupdateText(\"percent_swap\",\"$percent_swap%\");";
  226.                 echo "\n\t\t\t\tupdateText(\"free_swap\",\"$free_swap\" + \" kB\");";
  227.                 echo "\n\t\t\t\tupdateText(\"percent_swap_free\",\"$percent_swap_free%\");\n";
  228. ?>
  229.                 document.getElementById("bar1").style.width = "<?php echo $percent_used; ?>px";
  230.                 document.getElementById("bar2").style.width = "<?php echo $percent_free; ?>px";
  231.                 document.getElementById("bar3").style.width = "<?php echo $percent_buff; ?>px";
  232.                 document.getElementById("bar4").style.width = "<?php echo $percent_cach; ?>px";
  233.                 document.getElementById("bar5").style.width = "<?php echo $percent_swap; ?>px";
  234.                 document.getElementById("bar6").style.width = "<?php echo $percent_swap_free; ?>px";
  235.             }
  236.         </script>
  237.     </head>
  238.     <body onload="Javascript: updateDisplay();">
  239.     <h1 class="h1">Andrew&apos;s Raspberry Pi</h1>
  240.         <table>
  241.             <tr>
  242.                 <td colspan="4" class="head center">Network Monitoring</td>
  243.             </tr>
  244.             <tr>
  245.                 <td colspan="2">WAN Ping Statistics</td>
  246.                 <td colspan="2" class="right"><a href="http://192.168.1.1/cgi-bin/smokeping.cgi?target=WAN">Smokeping</a></td>
  247.             </tr>
  248.             <tr>
  249.                 <td colspan="4" class="darkbackground">&nbsp;</td>
  250.             <tr>
  251.             <tr>
  252.                 <td colspan="4" class="head center">System Information</td>
  253.             </tr>
  254.             <tr>
  255.                 <td colspan="4" class="head center">General Info</td>
  256.             </tr>
  257.             <tr>
  258.                 <td colspan="2">Hostname</td>
  259.                 <td colspan="2" id="host"></td>
  260.             </tr>
  261.             <tr>
  262.                 <td colspan="2">System Time</td>
  263.                 <td colspan="2" id="time"></td>
  264.             </tr>
  265.             <tr>
  266.                 <td colspan="2">Kernel</td>
  267.                 <td colspan="2" id="kernel"></td>
  268.             </tr>
  269.             <tr>
  270.                 <td colspan="2">Processor</td>
  271.                 <td colspan="2" id="processor"></td>
  272.             </tr>
  273.             <tr>
  274.                 <td colspan="2">CPU Frequency</td>
  275.                 <td colspan="2" id="freq"></td>
  276.             </tr>
  277.             <tr>
  278.                 <td colspan="2">Load Average</td>
  279.                 <td colspan="2" id="loadavg"></td>
  280.             </tr>
  281.             <tr>
  282.                 <td colspan="2">CPU Temperature</td>
  283.                 <td colspan="2" id="cpu_temperature"></td>
  284.             </tr>
  285.             <tr>
  286.                 <td colspan="2">Uptime</td>
  287.                 <td colspan="2" id="uptime"></td>
  288.             </tr>
  289.             <tr>
  290.                 <td colspan="4" class="darkbackground">&nbsp;</td>
  291.             </tr>
  292.             <tr>
  293.                 <td colspan="2" class="head right">Memory:</td>
  294.                 <td colspan="2" class="head" id="total_mem"><?php echo $total_mem . " kB";?></td>
  295.             </tr>
  296.             <tr>
  297.                 <td class="column1">Used</td>
  298.                 <td class="right" id="used_mem"></td>
  299.                 <td class="column3"><div id="bar1">&nbsp;</div></td>
  300.                 <td class="right column4" id="percent_used"></td>
  301.             </tr>
  302.             <tr>
  303.                 <td>Free</td>
  304.                 <td class="right" id="free_mem"></td>
  305.                 <td><div id="bar2"></div></td>
  306.                 <td class="right" id="percent_free"></td>
  307.             </tr>
  308.             <tr>
  309.                 <td>Buffered</td>
  310.                 <td class="right" id="buffer_mem"></td>
  311.                 <td><div id="bar3"></div></td>
  312.                 <td class="right" id="percent_buff"></td>
  313.             </tr>
  314.             <tr>
  315.                 <td>Cached</td>
  316.                 <td class="right" id="cache_mem"></td>
  317.                 <td><div id="bar4"></div></td>
  318.                 <td class="right" id="percent_cach"></td>
  319.             </tr>
  320.             <tr>
  321.                 <td colspan="4" class="darkbackground">&nbsp;</td>
  322.             </tr>
  323.             <tr>
  324.                 <td colspan="2" class="head right">Swap:</td>
  325.                 <td colspan="2" class="head" id="total_swap"></td>
  326.             </tr>
  327.             <tr>
  328.                 <td>Used</td>
  329.                 <td class="right" id="used_swap"></td>
  330.                 <td><div id="bar5"></div></td>
  331.                 <td class="right" id="percent_swap"></td>
  332.             </tr>
  333.             <tr>
  334.                 <td>Free</td>
  335.                 <td class="right" id="free_swap"></td>
  336.                 <td><div id="bar6"></div></td>
  337.                 <td class="right" id="percent_swap_free"></td>
  338.             </tr>
  339.             <tr>
  340.                 <td colspan="4" class="darkbackground">&nbsp;</td>
  341.             </tr>
  342.         </table>
  343.         <table id="tblDiskSpace">
  344.             <tr>
  345.                 <td colspan="4" class="head center">Disk Usage</td>
  346.             </tr>
  347. <?php
  348.     for ($i = 1; $i < $count; $i++)
  349.     {
  350.         $total = NumberWithCommas(intval(preg_replace("/[^0-9]/", "", trim($size[$i])))) . " MB";
  351.         $usedspace = NumberWithCommas(intval(preg_replace("/[^0-9]/", "", trim($used[$i])))) . " MB";
  352.         $freespace = NumberWithCommas(intval(preg_replace("/[^0-9]/", "", trim($avail[$i])))) . " MB";
  353.         echo "\n\t\t\t<tr>";
  354.         echo "\n\t\t\t\t<td class=\"head\" colspan=\"4\">" . $mount[$i] . " (" . $typex[$i] . ")</td>";
  355.         echo "\n\t\t\t</tr>";
  356.         echo "\n\t\t\t<tr>";
  357.         echo "\n\t\t\t\t<td>&nbsp;</td>";
  358.         echo "\n\t\t\t\t<td>Total Size</td>";
  359.         echo "\n\t\t\t\t<td class=\"right\">" . $total . "</td>";
  360.         echo "\n\t\t\t\t<td class=\"right\">&nbsp;</td>";
  361.         echo "\n\t\t\t</tr>";
  362.         echo "\n\t\t\t<tr>";
  363.         echo "\n\t\t\t\t<td>&nbsp;</td>";
  364.         echo "\n\t\t\t\t<td>Used</td>";
  365.         echo "\n\t\t\t\t<td class=\"right\">" . $usedspace . "</td>";
  366.         echo "\n\t\t\t\t<td class=\"right\">" . $percent[$i] . "</td>";
  367.         echo "\n\t\t\t</tr>";
  368.         echo "\n\t\t\t<tr>";
  369.         echo "\n\t\t\t\t<td>&nbsp;</td>";
  370.         echo "\n\t\t\t\t<td>Available</td>";
  371.         echo "\n\t\t\t\t<td class=\"right\">" . $freespace . "</td>";
  372.         echo "\n\t\t\t\t<td class=\"right\">" . (100-(floatval($percent_part[$i]))) . "%</td>";
  373.         echo "\n\t\t\t</tr>";
  374.         if ($i < $count-1):
  375.             echo "\n\t\t\t<tr><td colspan=\"4\">&nbsp;</td></tr>";
  376.         endif;
  377.     }
  378. ?>
  379.         </table>
  380.         <table>
  381.             <tr>
  382.                 <td class="right darkbackground"><a href="javascript:location.reload(true);" title="Refresh">Refresh</a></td>
  383.             </tr>
  384.         </table>
  385.     </body>
  386. </html>
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×