does very crude pipe checking. you need ' | ' for it to work
ie $program = CommonFunctions::executeProgram('netstat', '-anp | grep LIST');
NOT $program = CommonFunctions::executeProgram('netstat', '-anp|grep LIST');
public static executeProgram ( string $strProgramname, string $strArgs, &$strBuffer, boolean $booErrorRep = true ) : boolean | ||
$strProgramname | string | name of the program |
$strArgs | string | arguments to the program |
$booErrorRep | boolean | en- or disables the reporting of errors which should be logged |
return | boolean | command successfull or not |
/** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_LMSENSORS_ACCESS') ? strtolower(PSI_SENSOR_LMSENSORS_ACCESS) : 'command') { case 'command': if (CommonFunctions::executeProgram("sensors", "", $lines)) { // Martijn Stolk: Dirty fix for misinterpreted output of sensors, // where info could come on next line when the label is too long. $lines = str_replace(":\n", ":", $lines); $lines = str_replace("\n\n", "\n", $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; case 'data': if (CommonFunctions::rfts(APP_ROOT . '/data/lmsensors.txt', $lines)) { $lines = str_replace(":\n", ":", $lines); $lines = str_replace("\n\n", "\n", $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_LMSENSORS_ACCESS'); break; } }
/** * Number of Users * * @return void */ protected function _users() { if (CommonFunctions::executeProgram('who', '', $strBuf, PSI_DEBUG)) { if (strlen(trim($strBuf)) > 0) { $lines = preg_split('/\\n/', $strBuf); $this->sys->setUsers(count($lines)); } } elseif (CommonFunctions::executeProgram('uptime', '', $buf, PSI_DEBUG) && preg_match("/,\\s+(\\d+)\\s+user[s]?,/", $buf, $ar_buf)) { //} elseif (CommonFunctions::executeProgram('uptime', '', $buf) && preg_match("/,\s+(\d+)\s+user[s]?,\s+load average[s]?:\s+(.*),\s+(.*),\s+(.*)$/", $buf, $ar_buf)) { $this->sys->setUsers($ar_buf[1]); } else { $processlist = glob('/proc/*/cmdline', GLOB_NOSORT); if (($total = count($processlist)) > 0) { $count = 0; $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($processlist[$i], $buf, 0, 4096, false)) { $name = str_replace(chr(0), ' ', trim($buf)); if (preg_match("/^-/", $name)) { $count++; } } } if ($count > 0) { $this->sys->setUsers($count); } } } }
/** * fill the private content var through tcp or file access */ public function __construct() { parent::__construct(); switch (strtolower(PSI_SENSOR_ACCESS)) { case 'tcp': $fp = fsockopen("localhost", 411, $errno, $errstr, 5); if ($fp) { $lines = ""; while (!feof($fp)) { $lines .= fread($fp, 1024); } $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } else { $this->error->addError("fsockopen()", $errno . " " . $errstr); } break; case 'command': CommonFunctions::executeProgram('mbmon', '-c 1 -r', $lines, PSI_DEBUG); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_ACCESS'); break; } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { $buffer = ""; parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_DMRAID_ACCESS)) { case 'command': if (PSI_OS == 'FreeBSD') { CommonFunctions::executeProgram("graid", "list", $buffer); } else { CommonFunctions::executeProgram("dmraid", "-s -vv 2>&1", $buffer); } break; case 'data': CommonFunctions::rfts(APP_ROOT . "/data/dmraid.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_DMRAID_ACCESS"); break; } if (trim($buffer) != "") { if (PSI_OS == 'FreeBSD') { $this->_filecontent = preg_split("/Consumers:\r?\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); } else { $this->_filecontent = preg_split("/(\r?\n\\*\\*\\* )|(\r?\n--> )/", $buffer, -1, PREG_SPLIT_NO_EMPTY); } } else { $this->_filecontent = array(); } }
public function execute() { $this->_lines = array(); switch (strtolower(PSI_PLUGIN_UPRECORDS_ACCESS)) { case 'command': $lines = ""; $oldtz = getenv("TZ"); putenv("TZ=GMT"); $options = ""; if (defined('PSI_PLUGIN_UPRECORDS_MAX_ENTRIES')) { if (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === false) { $options = " -m 0"; } elseif (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES === true) { $options = " -m 1"; } elseif (PSI_PLUGIN_UPRECORDS_MAX_ENTRIES > 1 && PSI_PLUGIN_UPRECORDS_MAX_ENTRIES != 10) { $options = " -m " . PSI_PLUGIN_UPRECORDS_MAX_ENTRIES; } } if (CommonFunctions::executeProgram('uprecords', '-a -w' . $options, $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } putenv("TZ=" . $oldtz); break; case 'data': if (CommonFunctions::rfts(APP_ROOT . "/data/uprecords.txt", $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_PLUGIN_UPRECORDS_ACCESS'); break; } }
public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_SPEEDFAN_ACCESS') ? strtolower(PSI_SENSOR_SPEEDFAN_ACCESS) : 'command') { case 'command': if (CommonFunctions::executeProgram("SpeedFanGet.exe", "", $buffer, PSI_DEBUG) && strlen($buffer) > 0) { if (preg_match("/^Temperatures:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["temp"] = $out[1]; } if (preg_match("/^Fans:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["fans"] = $out[1]; } if (preg_match("/^Voltages:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["volt"] = $out[1]; } } break; case 'data': if (CommonFunctions::rfts(APP_ROOT . '/data/speedfan.txt', $buffer) && strlen($buffer) > 0) { if (preg_match("/^Temperatures:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["temp"] = $out[1]; } if (preg_match("/^Fans:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["fans"] = $out[1]; } if (preg_match("/^Voltages:\\s+(.+)\$/m", $buffer, $out)) { $this->_filecontent["volt"] = $out[1]; } } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_SPEEDFAN_ACCESS'); break; } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_UPDATENOTIFIER_ACCESS)) { case 'command': if (PSI_PLUGIN_UPDATENOTIFIER_UBUNTU_LANDSCAPE_FORMAT === true) { CommonFunctions::executeProgram("/usr/lib/update-notifier/apt-check", "--human-readable", $buffer_info); } else { CommonFunctions::executeProgram("/usr/lib/update-notifier/apt-check", "2>&1", $buffer_info); } break; case 'data': if (defined('PSI_PLUGIN_UPDATENOTIFIER_FILE') && is_string(PSI_PLUGIN_UPDATENOTIFIER_FILE)) { CommonFunctions::rfts(PSI_PLUGIN_UPDATENOTIFIER_FILE, $buffer_info); } else { CommonFunctions::rfts("/var/lib/update-notifier/updates-available", $buffer_info); } break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_UPDATENOTIFIER_ACCESS"); break; } // Remove blank lines $this->_filecontent = preg_split("/\r?\n/", $buffer_info, -1, PREG_SPLIT_NO_EMPTY); }
/** * get network information * * @return void */ private function _network() { if (CommonFunctions::executeProgram('netstat', '-nibd | grep Link', $netstat, PSI_DEBUG)) { $lines = preg_split("/\n/", $netstat, -1, PREG_SPLIT_NO_EMPTY); foreach ($lines as $line) { $ar_buf = preg_split("/\\s+/", $line); if (!empty($ar_buf[0])) { $dev = new NetDevice(); $dev->setName($ar_buf[0]); if (strlen($ar_buf[3]) < 15) { $dev->setTxBytes($ar_buf[8]); $dev->setRxBytes($ar_buf[5]); $dev->setDrops($ar_buf[10]); $dev->setErrors($ar_buf[4] + $ar_buf[7]); } else { $dev->setTxBytes($ar_buf[9]); $dev->setRxBytes($ar_buf[6]); $dev->setErrors($ar_buf[5] + $ar_buf[8]); $dev->setDrops($ar_buf[11]); } $this->sys->setNetDevices($dev); } } } }
/** * get all information from all configured ups and store output in internal array */ public function __construct() { parent::__construct(); if (defined('PSI_UPS_NUT_LIST') && is_string(PSI_UPS_NUT_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_NUT_LIST)) { $upses = eval(PSI_UPS_NUT_LIST); } else { $upses = array(PSI_UPS_NUT_LIST); } foreach ($upses as $ups) { CommonFunctions::executeProgram('upsc', '-l ' . trim($ups), $output, PSI_DEBUG); $ups_names = preg_split("/\n/", $output, -1, PREG_SPLIT_NO_EMPTY); foreach ($ups_names as $ups_name) { CommonFunctions::executeProgram('upsc', trim($ups_name) . '@' . trim($ups), $temp, PSI_DEBUG); if (!empty($temp)) { $this->_output[trim($ups_name) . '@' . trim($ups)] = $temp; } } } } else { //use default if address and port not defined CommonFunctions::executeProgram('upsc', '-l', $output, PSI_DEBUG); $ups_names = preg_split("/\n/", $output, -1, PREG_SPLIT_NO_EMPTY); foreach ($ups_names as $ups_name) { CommonFunctions::executeProgram('upsc', trim($ups_name), $temp, PSI_DEBUG); if (!empty($temp)) { $this->_output[trim($ups_name)] = $temp; } } } }
/** * get all information from all configured ups in config.php and store output in internal array */ public function __construct() { parent::__construct(); CommonFunctions::executeProgram('powersoftplus', '-p', $temp); if (!empty($temp)) { $this->_output[] = $temp; } }
/** * get all information from all configured ups and store output in internal array */ public function __construct() { parent::__construct(); CommonFunctions::executeProgram('pmset', '-g batt', $temp); if (!empty($temp)) { $this->_output[] = $temp; } }
/** * fill the private content var through command */ public function __construct() { parent::__construct(); $lines = ""; // CommonFunctions::executeProgram('sysctl', '-w hw.sensors', $lines); CommonFunctions::executeProgram('sysctl', 'hw.sensors', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); }
/** * get temperature information * * @return void */ private function _temperature() { if (PSI_OS == 'Linux') { $hwpaths = glob("/sys/devices/platform/coretemp.*/", GLOB_NOSORT); if (($totalh = count($hwpaths)) > 0) { $buf = ""; for ($h = 0; $h < $totalh; $h++) { $tempsensor = glob($hwpaths[$h] . "temp*_input", GLOB_NOSORT); if (($total = count($tempsensor)) > 0) { $buf = ""; for ($i = 0; $i < $total; $i++) { if (CommonFunctions::rfts($tempsensor[$i], $buf, 1, 4096, false) && trim($buf) != "") { $dev = new SensorDevice(); $dev->setValue(trim($buf) / 1000); $label = preg_replace("/_input\$/", "_label", $tempsensor[$i]); $crit = preg_replace("/_input\$/", "_crit", $tempsensor[$i]); $max = preg_replace("/_input\$/", "_max", $tempsensor[$i]); $crit_alarm = preg_replace("/_input\$/", "_crit_alarm", $tempsensor[$i]); if (CommonFunctions::fileexists($label) && CommonFunctions::rfts($label, $buf, 1, 4096, false) && trim($buf) != "") { $dev->setName(trim($buf)); } else { $labelname = trim(preg_replace("/_input\$/", "", pathinfo($tempsensor[$i], PATHINFO_BASENAME))); if ($labelname !== "") { $dev->setName($labelname); } else { $dev->setName('unknown'); } } if (CommonFunctions::fileexists($crit) && CommonFunctions::rfts($crit, $buf, 1, 4096, false) && trim($buf) != "") { $dev->setMax(trim($buf) / 1000); if (CommonFunctions::fileexists($crit_alarm) && CommonFunctions::rfts($crit_alarm, $buf, 1, 4096, false) && trim($buf) === "1") { $dev->setEvent("Critical Alarm"); } } elseif (CommonFunctions::fileexists($max) && CommonFunctions::rfts($max, $buf, 1, 4096, false) && trim($buf) != "") { $dev->setMax(trim($buf) / 1000); } $this->mbinfo->setMbTemp($dev); } } } } } } else { $smp = 1; CommonFunctions::executeProgram('sysctl', '-n kern.smp.cpus', $smp); for ($i = 0; $i < $smp; $i++) { $temp = 0; if (CommonFunctions::executeProgram('sysctl', '-n dev.cpu.' . $i . '.temperature', $temp)) { $temp = preg_replace('/C/', '', $temp); $dev = new SensorDevice(); $dev->setName("CPU " . ($i + 1)); $dev->setValue($temp); // $dev->setMax(70); $this->mbinfo->setMbTemp($dev); } } } }
/** * get all information from all configured ups and store output in internal array */ public function __construct() { parent::__construct(); CommonFunctions::executeProgram('upsc', '-l', $output); $ups_names = preg_split("/\n/", $output, -1, PREG_SPLIT_NO_EMPTY); foreach ($ups_names as $value) { CommonFunctions::executeProgram('upsc', $value, $temp); $this->_output[$value] = $temp; } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_PSSTATUS_ACCESS)) { case 'command': if (PSI_OS == 'WINNT') { try { $objLocator = new COM('WbemScripting.SWbemLocator'); $wmi = $objLocator->ConnectServer('', 'root\\CIMv2'); $process_wmi = CommonFunctions::getWMI($wmi, 'Win32_Process', array('Caption', 'ProcessId')); foreach ($process_wmi as $process) { $this->_filecontent[] = array(strtolower(trim($process['Caption'])), trim($process['ProcessId'])); } } catch (Exception $e) { } } else { if (defined('PSI_PLUGIN_PSSTATUS_PROCESSES') && is_string(PSI_PLUGIN_PSSTATUS_PROCESSES)) { if (preg_match(ARRAY_EXP, PSI_PLUGIN_PSSTATUS_PROCESSES)) { $processes = eval(PSI_PLUGIN_PSSTATUS_PROCESSES); } else { $processes = array(PSI_PLUGIN_PSSTATUS_PROCESSES); } if (defined('PSI_PLUGIN_PSSTATUS_USE_REGEX') && PSI_PLUGIN_PSSTATUS_USE_REGEX === true) { foreach ($processes as $process) { CommonFunctions::executeProgram("pgrep", "-n -x " . $process, $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_filecontent[] = array($process, $buffer); } } } else { foreach ($processes as $process) { CommonFunctions::executeProgram("pidof", "-s " . $process, $buffer, PSI_DEBUG); if (strlen($buffer) > 0) { $this->_filecontent[] = array($process, $buffer); } } } } } break; case 'data': CommonFunctions::rfts(APP_ROOT . "/data/psstatus.txt", $buffer); $processes = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); foreach ($processes as $process) { $ps = preg_split("/[\\s]?\\|[\\s]?/", $process, -1, PREG_SPLIT_NO_EMPTY); if (count($ps) == 2) { $this->_filecontent[] = array(trim($ps[0]), trim($ps[1])); } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_PSSTATUS_ACCESS)", "Bad psstatus configuration in phpsysinfo.ini"); break; } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (strtolower(PSI_PLUGIN_PS_ACCESS)) { case 'command': if (PSI_OS == 'WINNT') { try { $objLocator = new COM("WbemScripting.SWbemLocator"); $wmi = $objLocator->ConnectServer(); $os_wmi = $wmi->InstancesOf('Win32_OperatingSystem'); foreach ($os_wmi as $os) { $memtotal = $os->TotalVisibleMemorySize * 1024; } $process_wmi = $wmi->InstancesOf('Win32_Process'); foreach ($process_wmi as $process) { if (strlen(trim($process->CommandLine)) > 0) { $ps = trim($process->CommandLine); } else { $ps = trim($process->Caption); } if (trim($process->ProcessId) != 0) { $memusage = round(trim($process->WorkingSetSize) * 100 / $memtotal, 1); //ParentProcessId //Unique identifier of the process that creates a process. Process identifier numbers are reused, so they //only identify a process for the lifetime of that process. It is possible that the process identified by //ParentProcessId is terminated, so ParentProcessId may not refer to a running process. It is also //possible that ParentProcessId incorrectly refers to a process that reuses a process identifier. You can //use the CreationDate property to determine whether the specified parent was created after the process //represented by this Win32_Process instance was created. //=> subtrees of processes may be missing (WHAT TODO?!?) $this->_filecontent[] = trim($process->ProcessId) . " " . trim($process->ParentProcessId) . " " . $memusage . " " . $ps; } } } catch (Exception $e) { } } else { CommonFunctions::executeProgram("ps", "axo pid,ppid,pmem,args", $buffer, PSI_DEBUG); } break; case 'data': CommonFunctions::rfts(APP_ROOT . "/data/ps.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_PS_ACCESS"); break; } if (PSI_OS != 'WINNT') { if (trim($buffer) != "") { $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); unset($this->_filecontent[0]); } else { $this->_filecontent = array(); } } }
/** * get all information from all configured ups in config.php and store output in internal array */ public function __construct() { parent::__construct(); $upses = preg_split('/,/', PSI_UPS_APCUPSD_LIST, -1, PREG_SPLIT_NO_EMPTY); foreach ($upses as $ups) { CommonFunctions::executeProgram('apcaccess', 'status ' . trim($ups), $temp); if (!empty($temp)) { $this->_output[] = $temp; } } }
/** * get fan information * * @return void */ private function _fans() { if (CommonFunctions::executeProgram("snmpwalk", "-Ona -c public -v 1 -r 1 127.0.0.1 .1.3.6.1.4.1.24681.1.2.15.1.3", $buffer, PSI_DEBUG)) { $lines = preg_split('/\\r?\\n/', $buffer); foreach ($lines as $line) { if (preg_match('/^[\\.\\d]+\\.(\\d+) = STRING:\\s\\"?(\\d+)\\sRPM/', $line, $data)) { $dev = new SensorDevice(); $dev->setName("Fan " . $data[1]); $dev->setValue($data[2]); $this->mbinfo->setMbFan($dev); } } } }
/** * fill the private array */ function __construct() { parent::__construct(); switch (strtolower(PSI_SENSOR_ACCESS)) { case 'command': $lines = ""; CommonFunctions::executeProgram('k8temp', '', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_ACCESS'); break; } }
/** * get temperature information * * @return void */ private function _temperature() { $smp = 1; CommonFunctions::executeProgram('sysctl', '-n kern.smp.cpus', $smp); for ($i = 0; $i < $smp; $i++) { $temp = 0; if (CommonFunctions::executeProgram('sysctl', '-n dev.cpu.' . $i . '.temperature', $temp)) { $dev = new SensorDevice(); $dev->setName("CPU " . ($i + 1)); $dev->setValue($temp); $dev->setMax(70); $this->mbinfo->setMbTemp($dev); } } }
/** * get all information from all configured ups in config.php and store output in internal array */ public function __construct() { parent::__construct(); if (defined('PSI_UPS_APCUPSD_LIST') && is_string(PSI_UPS_APCUPSD_LIST)) { if (preg_match(ARRAY_EXP, PSI_UPS_APCUPSD_LIST)) { $upses = eval(PSI_UPS_APCUPSD_LIST); } else { $upses = array(PSI_UPS_APCUPSD_LIST); } foreach ($upses as $ups) { CommonFunctions::executeProgram('apcaccess', 'status ' . trim($ups), $temp); if (!empty($temp)) { $this->_output[] = $temp; } } } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (PSI_PLUGIN_SMART_ACCESS) { case 'command': $disks = preg_split('/([\\s]+)?,([\\s]+)?/', PSI_PLUGIN_SMART_DEVICES, -1, PREG_SPLIT_NO_EMPTY); foreach ($disks as $disk) { $buffer = ""; if (CommonFunctions::executeProgram('smartctl', '--all' . (PSI_PLUGIN_SMART_DEVICE ? ' --device ' . PSI_PLUGIN_SMART_DEVICE : '') . ' ' . $disk, $buffer, PSI_DEBUG)) { $this->_filecontent[$disk] = $buffer; } } $fullIds = preg_split('/([\\s]+)?,([\\s]+)?/', PSI_PLUGIN_SMART_IDS, -1, PREG_SPLIT_NO_EMPTY); foreach ($fullIds as $fullId) { $arrFullId = preg_split('/-/', $fullId); $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]); if (!empty($arrFullId[2])) { $this->_ids[intval($arrFullId[2])] = "#replace-" . intval($arrFullId[0]); } } break; case 'data': $disks = preg_split('/([\\s]+)?,([\\s]+)?/', PSI_PLUGIN_SMART_DEVICES, -1, PREG_SPLIT_NO_EMPTY); $dn = 0; foreach ($disks as $disk) { $buffer = ""; if (CommonFunctions::rfts(APP_ROOT . "/data/SMART{$dn}.txt", $buffer) && !empty($buffer)) { $this->_filecontent[$disk] = $buffer; } $dn++; } $fullIds = preg_split('/([\\s]+)?,([\\s]+)?/', PSI_PLUGIN_SMART_IDS, -1, PREG_SPLIT_NO_EMPTY); foreach ($fullIds as $fullId) { $arrFullId = preg_split('/-/', $fullId); $this->_ids[intval($arrFullId[0])] = strtolower($arrFullId[1]); if (!empty($arrFullId[2])) { $this->_ids[intval($arrFullId[2])] = "#replace-" . intval($arrFullId[0]); } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_SMART_ACCESS)", "Bad SMART configuration in SMART.config.php"); break; } }
/** * fill the private content var through tcp or file access */ public function __construct() { parent::__construct(); switch (strtolower(PSI_SENSOR_ACCESS)) { case 'command': CommonFunctions::executeProgram('ipmiutil', 'sensor -stw', $lines); $this->_lines = preg_split("/\r?\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'file': if (CommonFunctions::rfts(APP_ROOT . '/data/ipmiutil.txt', $lines)) { $this->_lines = preg_split("/\r?\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_ACCESS'); break; } }
/** * fill the private content var through command or data access */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_FREEIPMI_ACCESS') ? strtolower(PSI_SENSOR_FREEIPMI_ACCESS) : 'command') { case 'command': CommonFunctions::executeProgram('ipmi-sensors', '--output-sensor-thresholds', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT . '/data/freeipmi.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_FREEIPMI_ACCESS'); break; } }
/** * fill the private array */ public function __construct() { parent::__construct(); switch (defined('PSI_SENSOR_K8TEMP_ACCESS') ? strtolower(PSI_SENSOR_K8TEMP_ACCESS) : 'command') { case 'command': $lines = ""; CommonFunctions::executeProgram('k8temp', '', $lines); $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); break; case 'data': if (CommonFunctions::rfts(APP_ROOT . '/data/k8temp.txt', $lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_SENSOR_K8TEMP_ACCESS'); break; } }
public function execute() { $this->_lines = array(); switch (strtolower(PSI_PLUGIN_IPTABLES_ACCESS)) { case 'command': $lines = ""; if (CommonFunctions::executeProgram('iptables-save', "", $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; case 'data': if (CommonFunctions::rfts(APP_ROOT . "/data/iptables.txt", $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_PLUGIN_IPTABLES_ACCESS'); break; } }
/** * get network information * * @return void */ private function _network() { CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \\t].*Link"', $netstat_b); CommonFunctions::executeProgram('netstat', '-ndi | cut -c1-25,44- | grep "^[a-z]*[0-9][ \\t].*Link"', $netstat_n); $lines_b = preg_split("/\n/", $netstat_b, -1, PREG_SPLIT_NO_EMPTY); $lines_n = preg_split("/\n/", $netstat_n, -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $max = sizeof($lines_b); $i < $max; $i++) { $ar_buf_b = preg_split("/\\s+/", $lines_b[$i]); $ar_buf_n = preg_split("/\\s+/", $lines_n[$i]); if (!empty($ar_buf_b[0]) && !empty($ar_buf_n[3])) { $dev = new NetDevice(); $dev->setName($ar_buf_b[0]); $dev->setTxBytes($ar_buf_b[4]); $dev->setRxBytes($ar_buf_b[3]); $dev->setDrops($ar_buf_n[8]); $dev->setErrors($ar_buf_n[4] + $ar_buf_n[6]); $this->sys->setNetDevices($dev); } } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (PSI_PLUGIN_QUOTAS_ACCESS) { case 'command': CommonFunctions::executeProgram("repquota", "-au", $buffer, PSI_DEBUG); break; case 'data': CommonFunctions::rfts(APP_ROOT . "/data/quotas.txt", $buffer); break; default: $this->global_error->addConfigError("__construct()", "PSI_PLUGIN_QUOTAS_ACCESS"); break; } if (trim($buffer) != "") { $this->_filecontent = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); unset($this->_filecontent[0]); } else { $this->_filecontent = array(); } }
public function execute() { $this->_lines = array(); switch (strtolower(PSI_PLUGIN_UPRECORDS_ACCESS)) { case 'command': $lines = ""; $oldtz = getenv("TZ"); putenv("TZ=GMT"); if (CommonFunctions::executeProgram('uprecords', '-a -w', $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } putenv("TZ=" . $oldtz); break; case 'data': if (CommonFunctions::rfts(APP_ROOT . "/data/uprecords.txt", $lines) && !empty($lines)) { $this->_lines = preg_split("/\n/", $lines, -1, PREG_SPLIT_NO_EMPTY); } break; default: $this->error->addConfigError('__construct()', 'PSI_PLUGIN_UPRECORDS_ACCESS'); break; } }
/** * read the data into an internal array and also call the parent constructor * * @param String $enc target encoding */ public function __construct($enc) { parent::__construct(__CLASS__, $enc); switch (PSI_PLUGIN_PSSTATUS_ACCESS) { case 'command': if (PHP_OS == 'WINNT') { $objLocator = new COM("WbemScripting.SWbemLocator"); $wmi = $objLocator->ConnectServer(); $process_wmi = $wmi->InstancesOf('Win32_Process'); foreach ($process_wmi as $process) { $this->_filecontent[] = array(trim($process->Caption), trim($process->ProcessId)); } } else { $processes = preg_split("/([\\s]+)?,([\\s]+)?/", PSI_PLUGIN_PSSTATUS_PROCESSES, -1, PREG_SPLIT_NO_EMPTY); foreach ($processes as $process) { CommonFunctions::executeProgram("pidof", "-s " . $process, $buffer, PSI_DEBUG); if (strlen(trim($buffer)) > 0) { $this->_filecontent[] = array($process, trim($buffer)); } } } break; case 'data': CommonFunctions::rfts(APP_ROOT . "/data/psstatus.txt", $buffer); $processes = preg_split("/\n/", $buffer, -1, PREG_SPLIT_NO_EMPTY); foreach ($processes as $process) { $ps = preg_split("/[\\s]?\\|[\\s]?/", $process, -1, PREG_SPLIT_NO_EMPTY); if (count($ps) == 2) { $this->_filecontent[] = array(trim($ps[0]), trim($ps[1])); } } break; default: $this->global_error->addError("switch(PSI_PLUGIN_PSSTATUS_ACCESS)", "Bad psstatus configuration in psstatus.config.php"); break; } }