Viewing file: class.OS_Minix.php (4.33 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* * This file is part of Linfo (c) 2010 Joseph Gillotti. * * Linfo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Linfo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Linfo. If not, see <http://www.gnu.org/licenses/>. * */
defined('IN_INFO') or exit;
/* * Get info on a Minix system * --- * Note: the cli tools on minix are so meager that getting real detail * out of it (like nic stats / fs types / etc) is either difficult or * impossible. Nevertheless, this is my attempt at doing so. */
class OS_Minix {
// Store these here protected $settings, $exec, $error; // Start us off by localizing the settings and initializing the external // application running class function __construct($settings) {
// Localize settings $this->settings = $settings; // Start up external app loader $this->exec = new CallExt;
// Have it look in these places $this->exec->setSearchPaths(array('/usr/bin', '/usr/local/bin', '/bin')); }
// Get the information function getAll() { // Return everything, whilst obeying display permissions return array( 'OS' => empty($this->settings['show']['os']) ? '' : $this->getOS(), # done 'Kernel' => empty($this->settings['show']['kernel']) ? '' : $this->getKernel(), # done 'HostName' => empty($this->settings['show']['hostname']) ? '' : $this->getHostName(), # done 'Mounts' => empty($this->settings['show']['mounts']) ? array() : $this->getMounts(), # lacking info 'Network Devices' => empty($this->settings['show']['network']) ? array() : $this->getNet(), # lacking info 'CPU' => array(), 'Load' => array(),
// More to follow in further commits ); }
// Operating system private function getOS() { return 'Minix'; }
// Take advantage of php_uname for kernel private function getKernel() { return php_uname('r'); }
// Use that function again for host name private function getHostName() { return php_uname('n'); }
// Mounted file systems // --- // Note: the `mount` command does not have file system type // and php's disk_free_space/disk_total_space functions don't seem // to work here private function getMounts() {
// Try using the `mount` command to get mounted file systems try { $res = $this->exec->exec('mount'); } catch (CallExtException $e){ return array(); }
// Try matching up the output if (preg_match_all('/^(\S+) is .+ mounted on (\S+) \(.+\)$/m', $res, $mount_matches, PREG_SET_ORDER) == 0) return array();
// Store them here $mounts = array(); // Go through each match foreach ($mount_matches as $mount) {
// These might be a waste $size = @disk_total_space($mount[2]); $free = @disk_free_space($mount[2]); $used = $size - $free;
// Save it $mounts[] = array( 'device' => $mount[1], 'mount' => $mount[2], 'type' => '?', // Haven't a clue on how to get this on minix 'size' => $size, 'used' => $used, 'free' => $free, 'free_percent' => ((bool)$free != false && (bool)$size != false ? round($free / $size, 2) * 100 : false), 'used_percent' => ((bool)$used != false && (bool)$size != false ? round($used / $size, 2) * 100 : false) ); } // Return them return $mounts; }
// Get network interfaces // --- // netstat isn't installed by default and ifconfig doesn't have // much functionality for viewing status, so I can't seem to get // more than just name of interface private function getNet() {
// Try getting it. try { $res = $this->exec->exec('ifconfig', '-a'); } catch (CallExtException $e){ return array(); }
// Match up the entries if (preg_match_all('/^([^:]+)/m', $res, $net_matches, PREG_SET_ORDER) == 0) return array(); // Store them here $nets = array(); // Go through each foreach ($net_matches as $net) {
// Save this one $nets[$net[1]] = array( 'state' => '?', 'type' => '?' ); } // Give them return $nets; } }
|