You are here: RE: [PHP] Hardware Detection « PHP « IT news, forums, messages
RE: [PHP] Hardware Detection

Posted by "Daevid Vincent" on 08/23/05 23:25

This works on Linux/Unix boxen. On windows... You're on your own.


//generate the global array here so we can re-use it independant of output
format
$device['os_ver'] = exec("/bin/uname -a");

$temp = preg_split("/\s+/",exec("/sbin/ifconfig -a eth0 | /bin/grep
HWaddr"), -1, PREG_SPLIT_NO_EMPTY);
$device['MAC_addr_eth0'] = $temp[4];

$temp = preg_split("/[\s:]+/",exec("/sbin/ifconfig -a eth0 | /bin/grep
\"inet addr:\""), -1, PREG_SPLIT_NO_EMPTY);
$device['dot_quad_ip_eth0'] = $temp[2];

$temp = preg_split("/\s+/",exec("/sbin/ifconfig -a eth1 2>&1 | /bin/grep
HWaddr"), -1, PREG_SPLIT_NO_EMPTY);
$device['MAC_addr_eth1'] = $temp[4];

$temp = preg_split("/[\s:]+/",exec("/sbin/ifconfig -a eth1 2>&1 | /bin/grep
\"inet addr:\""), -1, PREG_SPLIT_NO_EMPTY);
$device['dot_quad_ip_eth1'] = $temp[2];

# look at /var for now as that seems to be where the bulk of our data is
stored.
$temp = preg_split("/\s+/",exec("/bin/df | /bin/grep hda1"), -1,
PREG_SPLIT_NO_EMPTY);
$device['hd_size'] = $temp[1];
$device['hd_used'] = $temp[2];

$temp = preg_split("/\s+/",exec("/usr/bin/free | /bin/grep Mem"), -1,
PREG_SPLIT_NO_EMPTY);
$device['ram_total'] = $temp[1];
$device['ram_used'] = $temp[2];

$temp = preg_split("/:/",exec("/bin/cat /proc/cpuinfo | /bin/grep 'model
name'"), -1, PREG_SPLIT_NO_EMPTY);
$temp1 = preg_split("/\s\s/",ltrim($temp[1]), -1, PREG_SPLIT_NO_EMPTY);
$device['cpu_type'] = $temp1[0];
$temp = preg_split("/:/",exec("/bin/cat /proc/cpuinfo | /bin/grep 'cpu
MHz'"), -1, PREG_SPLIT_NO_EMPTY);
$device['cpu_mhz'] = ltrim($temp[1]);

$temp = preg_split("/:/",substr(exec("/usr/bin/lspci | grep 'VGA'"), 8), -1,
PREG_SPLIT_NO_EMPTY);
$device['video'] = $temp[1];

$temp = preg_split("/:/",substr(exec("/usr/bin/lspci | grep 'Host'"), 8),
-1, PREG_SPLIT_NO_EMPTY);
$device['mobo'] = $temp[1];

$ethernet = `/usr/bin/lspci | grep 'Ethernet'`;
$temp = split("\n",$ethernet);
$temp1 = preg_split("/:/",substr($temp[0],8), -1, PREG_SPLIT_NO_EMPTY);
$device['nic_eth0'] = substr($temp1[1],1);
$temp1 = preg_split("/:/",substr($temp[1],8), -1, PREG_SPLIT_NO_EMPTY);
$device['nic_eth1'] = substr($temp1[1],1);

$device['proc_count'] = trim(`ps auxw | wc -l`);

$device['someprocessd'] = trim(`ps axuw | grep "someprocessd" | grep -v
"grep" | wc -l`);

# Returns the uptime of a Linux system by parsing through /proc/uptime.
# It returns a 4-field array (days, hours, minutes, seconds).
# I typically use it like:
# $ut = linuxUptime();
# echo "Time since last reboot: $ut[0] days, $ut[1] hours, $ut[2] minutes";
$ut = strtok( exec( "cat /proc/uptime" ), "." );
$days = sprintf( "%d", ($ut/(3600*24)) );
$hours = sprintf( "%2d", ( ($ut % (3600*24)) / 3600) );
$min = sprintf( "%2d", ($ut % (3600*24) % 3600)/60 );
$sec = sprintf( "%2d", ($ut % (3600*24) % 3600)%60 );
$device['uptime'] = $days."d ".$hours."h ".$min."m ".$sec."s";

//this version fails if the uptime is < 24 hours or 1 day since it's shown
as 20:15
//$temp = preg_split("/:/",exec("uptime"), -1, PREG_SPLIT_NO_EMPTY);
//$device['loadavg'] = substr($temp[2],1);
preg_match("/load average: (.*)/",exec("uptime"), $temp);
$device['loadavg'] = $temp[1];

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация