wmi = $objLocator->ConnectServer(); } else{ $this->wmi = $objLocator->ConnectServer($strHostname, "rootcimv2", "$strHostname\$strUser", $strPassword); } } // private function for getting a list of values in the specified context, optionally filter this list, based on the list from second parameter function _GetWMI($strClass, $strValue = array() ) { $objWEBM = $this->wmi->Get($strClass); if( PHP_VERSION < 5 ) { $objProp = $objWEBM->Properties_; $arrProp = $objProp->Next($objProp->Count); $objWEBMCol = $objWEBM->Instances_(); $arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count); } else { $arrProp = $objWEBM->Properties_; $arrWEBMCol = $objWEBM->Instances_(); } foreach($arrWEBMCol as $objItem) { @reset($arrProp); $arrInstance = array(); foreach($arrProp as $propItem) { eval("\$value = \$objItem->" .$propItem->Name .";"); if( empty( $strValue ) ) { $arrInstance[$propItem->Name] = trim($value); } else { if( in_array( $propItem->Name, $strValue ) ) { $arrInstance[$propItem->Name] = trim($value); } } } $arrData[] = $arrInstance; } return $arrData; } // private function for getting different device types from the system function _devicelist ( $strType ) { if( empty( $this->wmidevices ) ) { $this->wmidevices = $this->_GetWMI( "Win32_PnPEntity", array( "Name", "PNPDeviceID" ) ); } $list = array(); foreach ( $this->wmidevices as $device ) { if ( substr( $device["PNPDeviceID"], 0, strpos( $device["PNPDeviceID"], "\\" ) + 1 ) == ( $strType . "\\" ) ) { $list[] = $device["Name"]; } } return $list; } // get our canonical hostname function chostname () { $buffer = $this->_GetWMI( "Win32_ComputerSystem", array( "Name" ) ); $result = $buffer[0]["Name"]; return gethostbyaddr(gethostbyname($result)); } // get the IP address of our canonical hostname function ip_addr () { $buffer = $this->_GetWMI( "Win32_ComputerSystem", array( "Name" ) ); $result = $buffer[0]["Name"]; return gethostbyname($result); } function kernel () { $buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "Version", "ServicePackMajorVersion" ) ); $result = $buffer[0]["Version"]; if( $buffer[0]["ServicePackMajorVersion"] > 0 ) { $result .= " SP" . $buffer[0]["ServicePackMajorVersion"]; } return $result; } // get the time the system is running function uptime () { $result = 0; $buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "LastBootUpTime" ) ); $year = intval(substr($buffer[0]["LastBootUpTime"], 0, 4)); $month = intval(substr($buffer[0]["LastBootUpTime"], 4, 2)); $day = intval(substr($buffer[0]["LastBootUpTime"], 6, 2)); $hour = intval(substr($buffer[0]["LastBootUpTime"], 8, 2)); $minute = intval(substr($buffer[0]["LastBootUpTime"], 10, 2)); $seconds = intval(substr($buffer[0]["LastBootUpTime"], 12, 2)); $hour -= date("Z") / 60 / 60; // GMT-Offset $boottime = mktime($hour, $minute, $seconds, $month, $day, $year); $result = mktime() - $boottime; return $result; } // count the users, which are logged in function users () { if( !stristr( $this->kernel(), "2000 P" ) ) return "N.A."; $buffer = $this->_GetWMI( "Win32_PerfRawData_TermService_TerminalServices", array( "TotalSessions" ) ); return $buffer[0]["TotalSessions"]; } // get the load of the processors function loadavg ($bar = false) { $buffer = $this->_GetWMI( "Win32_Processor", array( "LoadPercentage" ) ); $cpuload = array(); for( $i = 0; $i < count( $buffer ); $i++ ) { $cpuload['avg'][] = $buffer[$i]["LoadPercentage"]; } if ($bar) { $cpuload['cpupercent'] = array_sum( $cpuload['avg'] ) / count( $buffer ); } return $cpuload; } // get some informations about the cpu's function cpu_info () { $buffer = $this->_GetWMI( "Win32_Processor", array( "Name", "L2CacheSize", "CurrentClockSpeed", "ExtClock" ) ); $results["cpus"] = 0; foreach ($buffer as $cpu) { $results["cpus"]++; $results["model"] = $cpu["Name"]; $results["cache"] = $cpu["L2CacheSize"]; $results["cpuspeed"] = $cpu["CurrentClockSpeed"]; $results["busspeed"] = $cpu["ExtClock"]; } return $results; } // get the pci devices from the system function pci () { $pci = $this->_devicelist( "PCI" ); return $pci; } // get the ide devices from the system function ide () { $buffer = $this->_devicelist( "IDE" ); $ide = array(); foreach ( $buffer as $device ) { $ide[]['model'] = $device; } return $ide; } // get the scsi devices from the system function scsi () { $scsi = $this->_devicelist( "SCSI" ); return $scsi; } // get the usb devices from the system function usb () { $usb = $this->_devicelist( "USB" ); return $usb; } // get the sbus devices from the system - currently not called function sbus () { $sbus = $this->_devicelist( "SBUS" ); return $sbus; } // get the netowrk devices and rx/tx bytes function network () { $buffer = $this->_GetWMI( "Win32_PerfRawData_Tcpip_NetworkInterface" ); $results = array(); foreach ( $buffer as $device ) { $dev_name = $device["Name"]; // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_tcpip_networkinterface.asp $results[$dev_name]['rx_bytes'] = $device["BytesReceivedPersec"]; $results[$dev_name]['rx_packets'] = $device["PacketsReceivedPersec"]; $results[$dev_name]['rx_errs'] = $device["PacketsReceivedErrors"]; $results[$dev_name]['rx_drop'] = $device["PacketsReceivedDiscarded"]; $results[$dev_name]['tx_bytes'] = $device["BytesSentPersec"]; $results[$dev_name]['tx_packets'] = $device["PacketsSentPersec"]; $results[$dev_name]['errs'] = $device["PacketsReceivedErrors"]; $results[$dev_name]['drop'] = $device["PacketsReceivedDiscarded"]; } return $results; } function memory () { $buffer = $this->_GetWMI( "Win32_LogicalMemoryConfiguration", array( "TotalPhysicalMemory" ) ); $results['ram']['total'] = $buffer[0]["TotalPhysicalMemory"]; $buffer = $this->_GetWMI( "Win32_PerfRawData_PerfOS_Memory", array( "AvailableKBytes" ) ); $results['ram']['free'] = $buffer[0]["AvailableKBytes"]; $results['ram']['used'] = $results['ram']['total'] - $results['ram']['free']; $results['ram']['t_used'] = $results['ram']['used']; $results['ram']['t_free'] = $results['ram']['total'] - $results['ram']['t_used']; $results['ram']['percent'] = ceil( ( $results['ram']['t_used'] * 100 ) / $results['ram']['total'] ); $results['swap']['total'] = 0; $results['swap']['used'] = 0; $results['swap']['free'] = 0; $buffer = $this->_GetWMI( "Win32_PageFileUsage" ); // no need to filter, using nearly everything from output $k = 0; foreach ($buffer as $swapdevice) { $results['devswap'][$k]['dev'] = $swapdevice["Name"]; $results['devswap'][$k]['total'] = $swapdevice["AllocatedBaseSize"] * 1024; $results['devswap'][$k]['used'] = $swapdevice["CurrentUsage"] * 1024; $results['devswap'][$k]['free'] = ( $swapdevice["AllocatedBaseSize"] - $swapdevice["CurrentUsage"] ) * 1024; $results['devswap'][$k]['percent'] = ceil( $swapdevice["CurrentUsage"] / $swapdevice["AllocatedBaseSize"] ); $results['swap']['total'] += $results['devswap'][$k]['total']; $results['swap']['used'] += $results['devswap'][$k]['used']; $results['swap']['free'] += $results['devswap'][$k]['free']; $k += 1; } $results['swap']['percent'] = ceil( $results['swap']['used'] / $results['swap']['total'] * 100 ); return $results; } // get the filesystem informations function filesystems () { $typearray = array("Unknown", "No Root Directory", "Removeable Disk", "Local Disk", "Network Drive", "Compact Disc", "RAM Disk"); $floppyarray = array("Unknown", "5 1/4 in.", "3 1/2 in.", "3 1/2 in.", "3 1/2 in.", "3 1/2 in.", "5 1/4 in.", "5 1/4 in.", "5 1/4 in.", "5 1/4 in.", "5 1/4 in.", "Other", "HD", "3 1/2 in.", "3 1/2 in.", "5 1/4 in.", "5 1/4 in.", "3 1/2 in.", "3 1/2 in.", "5 1/4 in.", "3 1/2 in.", "3 1/2 in.", "8 in."); $buffer = $this->_GetWMI( "Win32_LogicalDisk" , array( "Name", "Size", "FreeSpace", "FileSystem", "DriveType", "MediaType" ) ); $k = 0; foreach ( $buffer as $filesystem ) { if ( hide_mount( $filesystem["Name"] ) ) { continue; } $results[$k]['mount'] = $filesystem["Name"]; $results[$k]['size'] = $filesystem["Size"] / 1024; $results[$k]['used'] = ( $filesystem["Size"] - $filesystem["FreeSpace"] ) / 1024; $results[$k]['free'] = $filesystem["FreeSpace"] / 1024; @$results[$k]['percent'] = ceil( $results[$k]['used'] / $results[$k]['size'] * 100 ); // silence this line, nobody is having a floppy in the drive everytime $results[$k]['fstype'] = $filesystem["FileSystem"]; $results[$k]['disk'] = $typearray[$filesystem["DriveType"]]; if ( $filesystem["DriveType"] == 2 ) $results[$k]['disk'] .= " (" . $floppyarray[$filesystem["MediaType"]] . ")"; $k += 1; } return $results; } function distro () { $buffer = $this->_GetWMI( "Win32_OperatingSystem", array( "Caption" ) ); return $buffer[0]["Caption"]; } function distroicon () { return 'xp.gif'; } } ?>