class.linux.inc.php

来自「eGroupWare is a multi-user, web-based gr」· PHP 代码 · 共 440 行 · 第 1/2 页

PHP
440
字号
                // Check if device is CD-ROM (CD-ROM capacity shows as 1024 GB)                if ($fd = fopen("/proc/ide/$file/media", 'r')) {                    $results[$file]['media'] = trim(fgets($fd, 4096));                    if ($results[$file]['media'] == 'disk') {                        $results[$file]['media'] = 'Hard Disk';                    }                    if ($results[$file]['media'] == 'cdrom') {                        $results[$file]['media'] = 'CD-ROM';                    }                    fclose($fd);                }                if ($fd = fopen("/proc/ide/$file/model", 'r')) {                    $results[$file]['model'] = trim(fgets($fd, 4096));                    if (preg_match('/WDC/', $results[$file]['model'])) {                        $results[$file]['manufacture'] = 'Western Digital';                    } elseif (preg_match('/IBM/', $results[$file]['model'])) {                        $results[$file]['manufacture'] = 'IBM';                    } elseif (preg_match('/FUJITSU/', $results[$file]['model'])) {                        $results[$file]['manufacture'] = 'Fujitsu';                    } else {                        $results[$file]['manufacture'] = 'Unknown';                    }                    fclose($fd);                }                if ($fd = fopen("/proc/ide/$file/capacity", 'r')) {                    $results[$file]['capacity'] = trim(fgets($fd, 4096));                    if ($results[$file]['media'] == 'CD-ROM') {                        unset($results[$file]['capacity']);                    }                    fclose($fd);                }            }        }        closedir($handle);         return $results;    }    function scsi () {        $results    = array();        $dev_vendor = '';        $dev_model  = '';        $dev_rev    = '';        $dev_type   = '';        if ($fd = fopen('/proc/scsi/scsi', 'r')) {            while ($buf = fgets($fd, 4096)) {                if (preg_match('/Vendor/', $buf)) {                    preg_match('/Vendor: (.*) Model: (.*) Rev: (.*)/i', $buf, $dev);                    list($key, $value) = split(': ', $buf, 2);                    $dev_str  = $value;                    $get_type = 1;                    continue;                }                if ($get_type) {                    preg_match('/Type:\s+(\S+)/i', $buf, $dev_type);                    $results[] = "$dev[1] $dev[2] ( $dev_type[1] )";                    $get_type = 0;                }            }        }        return $results;    }    function network () {        $results = array();        if ($fd = fopen('/proc/net/dev', 'r')) {            while ($buf = fgets($fd, 4096)) {                if (preg_match('/:/', $buf)) {                    list($dev_name, $stats_list) = preg_split('/:/', $buf, 2);                    $stats = preg_split('/\s+/', trim($stats_list));                    $results[$dev_name] = array();                    $results[$dev_name]['rx_bytes']   = $stats[0];                    $results[$dev_name]['rx_packets'] = $stats[1];                    $results[$dev_name]['rx_errs']    = $stats[2];                    $results[$dev_name]['rx_drop']    = $stats[3];                    $results[$dev_name]['tx_bytes']   = $stats[8];                    $results[$dev_name]['tx_packets'] = $stats[9];                    $results[$dev_name]['tx_errs']    = $stats[10];                    $results[$dev_name]['tx_drop']    = $stats[11];                    $results[$dev_name]['errs']       = $stats[2] + $stats[10];                    $results[$dev_name]['drop']       = $stats[3] + $stats[11];                }            }        }        return $results;    }    function memory () {	    $uname = posix_uname();	    if ($fd = fopen('/proc/meminfo', 'r')) {		    if(preg_match('/^2\.(5|6)\.\d+/i',$uname['release'])) {			    $results['ram'] = array();			    $results['swap'] = array();			    $results['devswap'] = array();			    while ($buf = fgets($fd, 4096)) {				    if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['ram']['total']=$ar_buf[1];				    } else if (preg_match('/^MemFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['ram']['free']=$ar_buf[1];					    				    } else if (preg_match('/^Cached:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['ram']['cached']=$ar_buf[1];				    } else if (preg_match('/^Buffers:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['ram']['buffers']=$ar_buf[1];				    }  else if (preg_match('/^SwapTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['swap']['total']=$ar_buf[1];				    }   else if (preg_match('/^SwapFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) {					    $results['swap']['free']=$ar_buf[1];				    } 			    }			    $results['ram']['shared']=0;			    $results['ram']['used']=$results['ram']['total']-$results['ram']['free'];			    $results['swap']['used']=$results['swap']['total']-$results['swap']['free'];		    } else {			    while ($buf = fgets($fd, 4096)) {				    if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) {					    $ar_buf = preg_split('/\s+/', $ar_buf[1], 6);					    $results['ram'] = array();					    $results['ram']['total']   = $ar_buf[0] / 1024;					    $results['ram']['used']    = $ar_buf[1] / 1024;					    $results['ram']['free']    = $ar_buf[2] / 1024;					    $results['ram']['shared']  = $ar_buf[3] / 1024;					    $results['ram']['buffers'] = $ar_buf[4] / 1024;					    $results['ram']['cached']  = $ar_buf[5] / 1024;				    }				    if (preg_match('/Swap:\s+(.*)$/', $buf, $ar_buf)) {					    $ar_buf = preg_split('/\s+/', $ar_buf[1], 3);					    $results['swap'] = array();					    $results['swap']['total']   = $ar_buf[0] / 1024;					    $results['swap']['used']    = $ar_buf[1] / 1024;					    $results['swap']['free']    = $ar_buf[2] / 1024;					    // Get info on individual swap files					    break;				    }			    }			    fclose($fd);		    }		    $swaps = file ('/proc/swaps');		    $swapdevs = split("\n", $swaps);		    for ($i = 1; $i < (sizeof($swapdevs) - 1); $i++) {			    $ar_buf = preg_split('/\s+/', $swapdevs[$i], 6);			    $results['devswap'][$i - 1] = array();			    $results['devswap'][$i - 1]['dev']     = $ar_buf[0];			    $results['devswap'][$i - 1]['total']   = $ar_buf[2];			    $results['devswap'][$i - 1]['used']    = $ar_buf[3];			    $results['devswap'][$i - 1]['free']    = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']);			    $results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]);		    }		    // I don't like this since buffers and cache really aren't 		    // 'used' per say, but I get too many emails about it.		    $results['ram']['t_used']  = $results['ram']['used'];		    $results['ram']['t_free']  = $results['ram']['total'] - $results['ram']['t_used'];		    $results['ram']['percent'] = round(($results['ram']['t_used'] * 100) / $results['ram']['total']);		    $results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']);	    } else {		    $results['ram'] = array();		    $results['swap'] = array();		    $results['devswap'] = array();	    }	    return $results;    }    function filesystems () {        $df = execute_program('df', '-kP');        $mounts = split("\n", $df);        $fstype = array();        if ($fd = fopen('/proc/mounts', 'r')) {            while ($buf = fgets($fd, 4096)) {                list($dev, $mpoint, $type) = preg_split('/\s+/', trim($buf), 4);                $fstype[$mpoint] = $type;                $fsdev[$dev] = $type;            }            fclose($fd);        }        for ($i = 1; $i < sizeof($mounts); $i++) {            $ar_buf = preg_split('/\s+/', $mounts[$i], 6);            $results[$i - 1] = array();            $results[$i - 1]['disk'] = $ar_buf[0];            $results[$i - 1]['size'] = $ar_buf[1];            $results[$i - 1]['used'] = $ar_buf[2];            $results[$i - 1]['free'] = $ar_buf[3];            $results[$i - 1]['percent'] = round(($results[$i - 1]['used'] * 100) / $results[$i - 1]['size']) . '%';            $results[$i - 1]['mount'] = $ar_buf[5];            ($fstype[$ar_buf[5]]) ? $results[$i - 1]['fstype'] = $fstype[$ar_buf[5]] : $results[$i - 1]['fstype'] = $fsdev[$ar_buf[0]];        }        return $results;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?