📄 class.linux.inc.php
字号:
<?php // phpSysInfo - A PHP System Information Script// http://phpsysinfo.sourceforge.net/// This program 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 2// of the License, or (at your option) any later version.// This program 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 this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.// $Id: class.Linux.inc.php,v 1.1 2005/04/15 21:23:32 mschering Exp $class sysinfo { // get our apache SERVER_NAME or vhost function vhostname () { if (! ($result = getenv('SERVER_NAME'))) { $result = 'N.A.'; } return $result; } // get our canonical hostname function chostname () { if ($fp = fopen('/proc/sys/kernel/hostname', 'r')) { $result = trim(fgets($fp, 4096)); fclose($fp); $result = gethostbyaddr(gethostbyname($result)); } else { $result = 'N.A.'; } return $result; } // get the IP address of our canonical hostname function ip_addr () { if (!($result = getenv('SERVER_ADDR'))) { $result = gethostbyname($this->chostname()); } return $result; } function kernel () { if ($fd = fopen('/proc/version', 'r')) { $buf = fgets($fd, 4096); fclose($fd); if (preg_match('/version (.*?) /', $buf, $ar_buf)) { $result = $ar_buf[1]; if (preg_match('/SMP/', $buf)) { $result .= ' (SMP)'; } } else { $result = 'N.A.'; } } else { $result = 'N.A.'; } return $result; } function uptime () { global $text; $fd = fopen('/proc/uptime', 'r'); $ar_buf = split(' ', fgets($fd, 4096)); fclose($fd); $sys_ticks = trim($ar_buf[0]); $min = $sys_ticks / 60; $hours = $min / 60; $days = floor($hours / 24); $hours = floor($hours - ($days * 24)); $min = floor($min - ($days * 60 * 24) - ($hours * 60)); if ($days != 0) { $result = "$days " . $text['days'] . " "; } if ($hours != 0) { $result .= "$hours " . $text['hours'] . " "; } $result .= "$min " . $text['minutes']; return $result; } function users () { $who = split('=', execute_program('who', '-q')); $result = $who[1]; return $result; } function loadavg () { if ($fd = fopen('/proc/loadavg', 'r')) { $results = split(' ', fgets($fd, 4096)); fclose($fd); } else { $results = array('N.A.', 'N.A.', 'N.A.'); } return $results; } function cpu_info () { $results = array(); $ar_buf = array(); if ($fd = fopen('/proc/cpuinfo', 'r')) { while ($buf = fgets($fd, 4096)) { list($key, $value) = preg_split('/\s+:\s+/', trim($buf), 2); // All of the tags here are highly architecture dependant. // the only way I could reconstruct them for machines I don't // have is to browse the kernel source. So if your arch isn't // supported, tell me you want it written in. switch ($key) { case 'model name': $results['model'] = $value; break; case 'cpu MHz': $results['mhz'] = sprintf('%.2f', $value); break; case 'cycle frequency [Hz]': // For Alpha arch - 2.2.x $results['mhz'] = sprintf('%.2f', $value / 1000000); break; case 'clock': // For PPC arch (damn borked POS) $results['mhz'] = sprintf('%.2f', $value); break; case 'cpu': // For PPC arch (damn borked POS) $results['model'] = $value; break; case 'L2 cache': // More for PPC $results['cache'] = $value; break; case 'revision': // For PPC arch (damn borked POS) $results['model'] .= ' ( rev: ' . $value . ')'; break; case 'cpu model': // For Alpha arch - 2.2.x $results['model'] .= ' (' . $value . ')'; break; case 'cache size': $results['cache'] = $value; break; case 'bogomips': $results['bogomips'] += $value; break; case 'BogoMIPS': // For alpha arch - 2.2.x $results['bogomips'] += $value; break; case 'BogoMips': // For sparc arch $results['bogomips'] += $value; break; case 'cpus detected': // For Alpha arch - 2.2.x $results['cpus'] += $value; break; case 'system type': // Alpha arch - 2.2.x $results['model'] .= ', ' . $value . ' '; break; case 'platform string': // Alpha arch - 2.2.x $results['model'] .= ' (' . $value . ')'; break; case 'processor': $results['cpus'] += 1; break; case 'Cpu0ClkTck': // Linux sparc64 $results['mhz'] = sprintf('%.2f', hexdec($value) / 1000000); break; case 'Cpu0Bogo': // Linux sparc64 & sparc32 $results['bogomips'] = $value; break; case 'ncpus probed': // Linux sparc64 & sparc32 $results['cpus'] = $value; break; } } fclose($fd); } $keys = array_keys($results); $keys2be = array('model', 'mhz', 'cache', 'bogomips', 'cpus'); while ($ar_buf = each($keys2be)) { if (! in_array($ar_buf[1], $keys)) { $results[$ar_buf[1]] = 'N.A.'; } } return $results; } function pci () { $results = array(); if ($_results = execute_program('lspci')) { $lines = split("\n", $_results); for ($i = 0, $max = sizeof($lines); $i < $max; $i++) { list($addr, $name) = explode(' ', trim($lines[$i]), 2); if (!preg_match('/bridge/i', $name) && !preg_match('/USB/i', $name)) { // remove all the version strings $name = preg_replace('/\(.*\)/', '', $name); $results[] = $addr . ' ' . $name; } } } elseif ($fd = fopen('/proc/pci', 'r')) { while ($buf = fgets($fd, 4096)) { if (preg_match('/Bus/', $buf)) { $device = 1; continue; } if ($device) { list($key, $value) = split(': ', $buf, 2); if (!preg_match('/bridge/i', $key) && !preg_match('/USB/i', $key)) { $results[] = preg_replace('/\([^\)]+\)\.$/', '', trim($value)); } $device = 0; } } } asort($results); return $results; } function ide () { $results = array(); $handle = opendir('/proc/ide'); while ($file = readdir($handle)) { if (preg_match('/^hd/', $file)) { $results[$file] = array(); // 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') {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -