示例#1
0
 /**
  * get network information
  *
  * @return void
  */
 private function _network()
 {
     $dev = null;
     if (CommonFunctions::executeProgram('netstat', '-nibd', $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])) {
                 if (preg_match('/^<Link/i', $ar_buf[2])) {
                     $dev = new NetDevice();
                     $dev->setName($ar_buf[0]);
                     if (strlen($ar_buf[3]) < 17) {
                         /* no Address */
                         if (isset($ar_buf[11]) && trim($ar_buf[11]) != '') {
                             /* Idrop column exist*/
                             $dev->setTxBytes($ar_buf[9]);
                             $dev->setRxBytes($ar_buf[6]);
                             $dev->setErrors($ar_buf[4] + $ar_buf[8]);
                             $dev->setDrops($ar_buf[11] + $ar_buf[5]);
                         } else {
                             $dev->setTxBytes($ar_buf[8]);
                             $dev->setRxBytes($ar_buf[5]);
                             $dev->setErrors($ar_buf[4] + $ar_buf[7]);
                             $dev->setDrops($ar_buf[10]);
                         }
                     } else {
                         if (isset($ar_buf[12]) && trim($ar_buf[12]) != '') {
                             /* Idrop column exist*/
                             $dev->setTxBytes($ar_buf[10]);
                             $dev->setRxBytes($ar_buf[7]);
                             $dev->setErrors($ar_buf[5] + $ar_buf[9]);
                             $dev->setDrops($ar_buf[12] + $ar_buf[6]);
                         } else {
                             $dev->setTxBytes($ar_buf[9]);
                             $dev->setRxBytes($ar_buf[6]);
                             $dev->setErrors($ar_buf[5] + $ar_buf[8]);
                             $dev->setDrops($ar_buf[11]);
                         }
                     }
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && CommonFunctions::executeProgram('ifconfig', $ar_buf[0] . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                         $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                         foreach ($bufe2 as $buf2) {
                             if (preg_match('/^\\s+ether\\s+(\\S+)/i', $buf2, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                             } elseif (preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             } elseif ((preg_match('/^\\s+inet6\\s+([^\\s%]+)\\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\s+([^\\s%]+)%\\S+\\s+prefixlen/i', $buf2, $ar_buf2)) && $ar_buf2[1] != "::" && !preg_match('/^fe80::/i', $ar_buf2[1])) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         }
                     }
                     $this->sys->setNetDevices($dev);
                 }
             }
         }
     }
 }
示例#2
0
 /**
  * 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);
         }
     }
 }
 /**
  * Network devices
  * includes also rx/tx bytes
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::rfts('/proc/net/dev', $bufr)) {
         $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         foreach ($bufe as $buf) {
             if (preg_match('/:/', $buf)) {
                 list($dev_name, $stats_list) = preg_split('/:/', $buf, 2);
                 $stats = preg_split('/\\s+/', trim($stats_list));
                 $dev = new NetDevice();
                 $dev->setName(trim($dev_name));
                 $dev->setRxBytes($stats[0]);
                 $dev->setTxBytes($stats[8]);
                 $dev->setErrors($stats[2] + $stats[10]);
                 $dev->setDrops($stats[3] + $stats[11]);
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
示例#4
0
 /**
  * get network information
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-24,42- | 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, 10);
             if (!empty($ar_buf[0])) {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[0]);
                 $dev->setTxBytes($ar_buf[8]);
                 $dev->setRxBytes($ar_buf[5]);
                 $dev->setErrors($ar_buf[4] + $ar_buf[7]);
                 if (isset($ar_buf[10])) {
                     $dev->setDrops($ar_buf[10]);
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
 /**
  * Network devices
  * includes also rx/tx bytes
  *
  * @return void
  */
 protected function _network()
 {
     if (CommonFunctions::rfts('/proc/net/dev', $bufr, 0, 4096, PSI_DEBUG)) {
         $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         foreach ($bufe as $buf) {
             if (preg_match('/:/', $buf)) {
                 list($dev_name, $stats_list) = preg_split('/:/', $buf, 2);
                 $stats = preg_split('/\\s+/', trim($stats_list));
                 $dev = new NetDevice();
                 $dev->setName(trim($dev_name));
                 $dev->setRxBytes($stats[0]);
                 $dev->setTxBytes($stats[8]);
                 $dev->setErrors($stats[2] + $stats[10]);
                 $dev->setDrops($stats[3] + $stats[11]);
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && CommonFunctions::executeProgram('ifconfig', trim($dev_name) . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                     $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                     foreach ($bufe2 as $buf2) {
                         //                            if (preg_match('/^'.trim($dev_name).'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2)
                         if (preg_match('/\\s+encap:Ethernet\\s+HWaddr\\s(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+ether\\s+(\\S+)\\s+txqueuelen/i', $buf2, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)\\s+P-t-P:(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask.+destination\\s+(\\S+)/i', $buf2, $ar_buf2)) {
                             if ($ar_buf2[1] != $ar_buf2[2]) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1] . ";:" . $ar_buf2[2]);
                             } else {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2) || preg_match('/^' . trim($dev_name) . ':\\s+ip\\s+(\\S+)\\s+mask/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\saddr:\\s([^\\/]+)(.+)\\s+Scope:[GH]/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\s+(\\S+)\\s+prefixlen(.+)((<global>)|(<host>))/i', $buf2, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         }
                     }
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     } elseif (CommonFunctions::executeProgram('ifconfig', '', $bufr, PSI_DEBUG)) {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         $notwas = true;
         foreach ($lines as $line) {
             if (preg_match("/^([^\\s:]+)/", $line, $ar_buf)) {
                 if (!$notwas) {
                     $dev->setErrors($errors);
                     $dev->setDrops($drops);
                     $this->sys->setNetDevices($dev);
                 }
                 $errors = 0;
                 $drops = 0;
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 $notwas = false;
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     if (preg_match('/^' . $ar_buf[1] . '\\s+Link\\sencap:Ethernet\\s+HWaddr\\s(\\S+)/i', $line, $ar_buf2)) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                     } elseif (preg_match('/^' . $ar_buf[1] . ':\\s+ip\\s+(\\S+)\\s+mask/i', $line, $ar_buf2)) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                     }
                 }
             } else {
                 if (!$notwas) {
                     if (preg_match('/\\sRX bytes:(\\d+)\\s/i', $line, $ar_buf2)) {
                         $dev->setRxBytes($ar_buf2[1]);
                     }
                     if (preg_match('/\\sTX bytes:(\\d+)\\s/i', $line, $ar_buf2)) {
                         $dev->setTxBytes($ar_buf2[1]);
                     }
                     if (preg_match('/\\sRX packets:\\d+\\serrors:(\\d+)\\sdropped:(\\d+)/i', $line, $ar_buf2)) {
                         $errors += $ar_buf2[1];
                         $drops += $ar_buf2[2];
                     } elseif (preg_match('/\\sTX packets:\\d+\\serrors:(\\d+)\\sdropped:(\\d+)/i', $line, $ar_buf2)) {
                         $errors += $ar_buf2[1];
                         $drops += $ar_buf2[2];
                     }
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         if (preg_match('/\\s+encap:Ethernet\\s+HWaddr\\s(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+ether\\s+(\\S+)\\s+txqueuelen/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)\\s+P-t-P:(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask.+destination\\s+(\\S+)/i', $line, $ar_buf2)) {
                             if ($ar_buf2[1] != $ar_buf2[2]) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1] . ";:" . $ar_buf2[2]);
                             } else {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $line, $ar_buf2) || preg_match('/^\\s+inet6\\saddr:\\s([^\\/]+)(.+)\\s+Scope:[GH]/i', $line, $ar_buf2) || preg_match('/^\\s+inet6\\s+(\\S+)\\s+prefixlen(.+)((<global>)|(<host>))/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         }
                     }
                 }
             }
         }
         if (!$notwas) {
             $dev->setErrors($errors);
             $dev->setDrops($drops);
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#6
0
 /**
  * Network devices
  * includes also rx/tx bytes
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('netstat', '-ni | tail -n +2', $netstat)) {
         $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]) && !empty($ar_buf[3])) {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[0]);
                 $dev->setRxBytes($ar_buf[4]);
                 $dev->setTxBytes($ar_buf[6]);
                 $dev->setErrors($ar_buf[5] + $ar_buf[7]);
                 $dev->setDrops($ar_buf[8]);
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
 /**
  * get network information
  *
  * @return void
  */
 private function _network()
 {
     $dev = NULL;
     if (CommonFunctions::executeProgram('netstat', '-nibd', $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])) {
                 if (preg_match('/^<Link/i', $ar_buf[2])) {
                     if (!is_null($dev)) {
                         $this->sys->setNetDevices($dev);
                     }
                     $dev = new NetDevice();
                     $dev->setName($ar_buf[0]);
                     if (strlen($ar_buf[3]) < 17) {
                         /* no Address */
                         if (isset($ar_buf[11])) {
                             /* Idrop column exist*/
                             $dev->setTxBytes($ar_buf[9]);
                             $dev->setRxBytes($ar_buf[6]);
                             $dev->setErrors($ar_buf[4] + $ar_buf[8]);
                             $dev->setDrops($ar_buf[11] + $ar_buf[5]);
                         } else {
                             $dev->setTxBytes($ar_buf[8]);
                             $dev->setRxBytes($ar_buf[5]);
                             $dev->setErrors($ar_buf[4] + $ar_buf[7]);
                             $dev->setDrops($ar_buf[10]);
                         }
                     } else {
                         if (isset($ar_buf[12])) {
                             /* Idrop column exist*/
                             $dev->setTxBytes($ar_buf[10]);
                             $dev->setRxBytes($ar_buf[7]);
                             $dev->setErrors($ar_buf[5] + $ar_buf[9]);
                             $dev->setDrops($ar_buf[12] + $ar_buf[6]);
                         } else {
                             $dev->setTxBytes($ar_buf[9]);
                             $dev->setRxBytes($ar_buf[6]);
                             $dev->setErrors($ar_buf[5] + $ar_buf[8]);
                             $dev->setDrops($ar_buf[11]);
                         }
                         $dev->setInfo(preg_replace('/:/', '-', $ar_buf[3]));
                     }
                 } else {
                     if (!is_null($dev)) {
                         if ($dev->getName() == $ar_buf[0]) {
                             /* other infos */
                             if (!preg_match('/^fe80::/i', $ar_buf[3])) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf[3]);
                             }
                         } else {
                             /* something wrong */
                             $this->sys->setNetDevices($dev);
                             $dev = NULL;
                         }
                     }
                 }
             }
         }
         if (!is_null($dev)) {
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#8
0
 /**
  * Network devices
  *
  * @return void
  */
 private function _network()
 {
     foreach ($this->_getWMI('Win32_PerfRawData_Tcpip_NetworkInterface') as $device) {
         $dev = new NetDevice();
         $dev->setName($device['Name']);
         // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_tcpip_networkinterface.asp
         // there is a possible bug in the wmi interfaceabout uint32 and uint64: http://www.ureader.com/message/1244948.aspx, so that
         // magative numbers would occour, try to calculate the nagative value from total - positive number
         $txbytes = $device['BytesSentPersec'];
         if ($txbytes < 0) {
             $txbytes = $device['BytesTotalPersec'] - $device['BytesReceivedPersec'];
         }
         $dev->setTxBytes($txbytes);
         $rxbytes = $device['BytesReceivedPersec'];
         if ($rxbytes < 0) {
             $rxbytes = $device['BytesTotalPersec'] - $device['BytesSentPersec'];
         }
         $dev->setRxBytes($rxbytes);
         $dev->setErrors($device['PacketsReceivedErrors']);
         $dev->setDrops($device['PacketsReceivedDiscarded']);
         $this->sys->setNetDevices($dev);
     }
 }
 /**
  * Network devices
  *
  * @return void
  */
 private function _network()
 {
     $allDevices = CommonFunctions::getWMI($this->_wmi, 'Win32_PerfRawData_Tcpip_NetworkInterface');
     //, array('Name', 'BytesSentPersec', 'BytesTotalPersec', 'BytesReceivedPersec', 'PacketsReceivedErrors', 'PacketsReceivedDiscarded'));
     $allNetworkAdapterConfigurations = CommonFunctions::getWMI($this->_wmi, 'Win32_NetworkAdapterConfiguration');
     //, array('Description', 'MACAddress', 'IPAddress', 'SettingID'));
     foreach ($allDevices as $device) {
         $dev = new NetDevice();
         $name = $device['Name'];
         if (preg_match('/^isatap\\.({[A-Fa-f0-9\\-]*})/', $name, $ar_name)) {
             //isatap device
             foreach ($allNetworkAdapterConfigurations as $NetworkAdapterConfiguration) {
                 if ($ar_name[1] == $NetworkAdapterConfiguration['SettingID']) {
                     $dev->setName($NetworkAdapterConfiguration['Description']);
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         $dev->setInfo(preg_replace('/:/', '-', $NetworkAdapterConfiguration['MACAddress']));
                         if (isset($NetworkAdapterConfiguration['IPAddress'])) {
                             foreach ($NetworkAdapterConfiguration['IPAddress'] as $ipaddres) {
                                 if ($ipaddres != "0.0.0.0" && !preg_match('/^fe80::/i', $ipaddres)) {
                                     $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ipaddres);
                                 }
                             }
                         }
                     }
                     break;
                 }
             }
         } else {
             $cname = preg_replace('/[^A-Za-z0-9]/', '_', $name);
             //convert to canonical
             if (preg_match('/\\s-\\s([^-]*)$/', $name, $ar_name)) {
                 $name = substr($name, 0, strlen($name) - strlen($ar_name[0]));
             }
             $dev->setName($name);
             if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                 foreach ($allNetworkAdapterConfigurations as $NetworkAdapterConfiguration) {
                     if (preg_replace('/[^A-Za-z0-9]/', '_', $NetworkAdapterConfiguration['Description']) == $cname) {
                         if (!is_null($dev->getInfo())) {
                             $dev->setInfo('');
                             //multiple with the same name
                         } else {
                             $dev->setInfo(preg_replace('/:/', '-', $NetworkAdapterConfiguration['MACAddress']));
                             if (isset($NetworkAdapterConfiguration['IPAddress'])) {
                                 foreach ($NetworkAdapterConfiguration['IPAddress'] as $ipaddres) {
                                     if ($ipaddres != "0.0.0.0" && !preg_match('/^fe80::/i', $ipaddres)) {
                                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ipaddres);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfrawdata_tcpip_networkinterface.asp
         // there is a possible bug in the wmi interfaceabout uint32 and uint64: http://www.ureader.com/message/1244948.aspx, so that
         // magative numbers would occour, try to calculate the nagative value from total - positive number
         $txbytes = $device['BytesSentPersec'];
         $rxbytes = $device['BytesReceivedPersec'];
         if ($txbytes < 0 && $rxbytes < 0) {
             $txbytes += 4294967296;
             $rxbytes += 4294967296;
         } elseif ($txbytes < 0) {
             if ($device['BytesTotalPersec'] > $rxbytes) {
                 $txbytes = $device['BytesTotalPersec'] - $rxbytes;
             } else {
                 $txbytes += 4294967296;
             }
         } elseif ($rxbytes < 0) {
             if ($device['BytesTotalPersec'] > $txbytes) {
                 $rxbytes = $device['BytesTotalPersec'] - $txbytes;
             } else {
                 $rxbytes += 4294967296;
             }
         }
         $dev->setTxBytes($txbytes);
         $dev->setRxBytes($rxbytes);
         $dev->setErrors($device['PacketsReceivedErrors']);
         $dev->setDrops($device['PacketsReceivedDiscarded']);
         $this->sys->setNetDevices($dev);
     }
 }
示例#10
0
 /**
  * network information
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('ifconfig', '', $bufr, PSI_DEBUG)) {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         $notwas = true;
         foreach ($lines as $line) {
             if (preg_match("/^(\\S+)/", $line, $ar_buf)) {
                 if (!$notwas) {
                     $dev->setErrors($errors);
                     $dev->setDrops($drops);
                     $this->sys->setNetDevices($dev);
                 }
                 $errors = 0;
                 $drops = 0;
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 $notwas = false;
             } else {
                 if (!$notwas) {
                     if (preg_match('/\\sReceive:\\s\\d+\\spackets,\\s(\\d+)\\serrors,\\s(\\d+)\\sbytes,\\s\\d+\\smcasts,\\s(\\d+)\\sdropped/i', $line, $ar_buf2)) {
                         $errors += $ar_buf2[1];
                         $drops += $ar_buf2[3];
                         $dev->setRxBytes($ar_buf2[2]);
                     } else {
                         if (preg_match('/\\sTransmit:\\s\\d+\\spackets,\\s(\\d+)\\serrors,\\s(\\d+)\\sbytes,\\s\\d+\\smcasts,\\s(\\d+)\\sdropped/i', $line, $ar_buf2)) {
                             $errors += $ar_buf2[1];
                             $drops += $ar_buf2[3];
                             $dev->setTxBytes($ar_buf2[2]);
                         }
                     }
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         if (preg_match('/\\sEthernet,\\s+Address:\\s(\\S*)/i', $line, $ar_buf2)) {
                             $dev->setInfo(preg_replace('/:/', '-', $ar_buf2[1]));
                         } else {
                             if (preg_match('/^\\s+inet\\saddr:\\s(\\S*),/i', $line, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             } else {
                                 if (preg_match('/^\\s+inet6\\saddr:\\s(\\S*),/i', $line, $ar_buf2)) {
                                     if (!preg_match('/^fe80::/i', $ar_buf2[1])) {
                                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         if (!$notwas) {
             $dev->setErrors($errors);
             $dev->setDrops($drops);
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#11
0
 /**
  * get network information
  *
  * @return void
  */
 private function _network()
 {
     CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-25,44- | grep Link | grep -v \'* \'', $netstat_b, PSI_DEBUG);
     CommonFunctions::executeProgram('netstat', '-ndi | cut -c1-25,44- | grep Link | grep -v \'* \'', $netstat_n, PSI_DEBUG);
     $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]) || $ar_buf_n[3] === "0")) {
             $dev = new NetDevice();
             $dev->setName($ar_buf_b[0]);
             $dev->setTxBytes($ar_buf_b[4]);
             $dev->setRxBytes($ar_buf_b[3]);
             $dev->setErrors($ar_buf_n[4] + $ar_buf_n[6]);
             $dev->setDrops($ar_buf_n[8]);
             if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && CommonFunctions::executeProgram('ifconfig', $ar_buf_b[0] . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                 $speedinfo = "";
                 $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                 foreach ($bufe2 as $buf2) {
                     if (preg_match('/^\\s+lladdr\\s+(\\S+)/i', $buf2, $ar_buf2)) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', strtoupper($ar_buf2[1])));
                     } elseif (preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2)) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                     } elseif ((preg_match('/^\\s+inet6\\s+([^\\s%]+)\\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\s+([^\\s%]+)%\\S+\\s+prefixlen/i', $buf2, $ar_buf2)) && $ar_buf2[1] != "::" && !preg_match('/^fe80::/i', $ar_buf2[1])) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . strtolower($ar_buf2[1]));
                     } elseif (preg_match('/^\\s+media:\\s+/i', $buf2) && preg_match('/[\\(\\s](\\d+)(G*)base/i', $buf2, $ar_buf2)) {
                         if (isset($ar_buf2[2]) && strtoupper($ar_buf2[2]) == "G") {
                             $unit = "G";
                         } else {
                             $unit = "M";
                         }
                         if (preg_match('/\\s(\\S+)-duplex/i', $buf2, $ar_buf3)) {
                             $speedinfo = $ar_buf2[1] . $unit . 'b/s ' . strtolower($ar_buf3[1]);
                         } else {
                             $speedinfo = $ar_buf2[1] . $unit . 'b/s';
                         }
                     }
                 }
                 if ($speedinfo != "") {
                     $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speedinfo);
                 }
             }
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#12
0
 /**
  * Network devices
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('netstat', '-ni | awk \'(NF ==10){print;}\'', $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]) && $ar_buf[0] !== 'Name') {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[0]);
                 $results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[7];
                 if (preg_match('/^(\\D+)(\\d+)$/', $ar_buf[0], $intf)) {
                     $prefix = $intf[1] . ':' . $intf[2] . ':' . $intf[1] . $intf[2] . ':';
                 } elseif (preg_match('/^(\\D.*)(\\d+)$/', $ar_buf[0], $intf)) {
                     $prefix = $intf[1] . ':' . $intf[2] . ':mac:';
                 } else {
                     $prefix = "";
                 }
                 if ($prefix !== "") {
                     $cnt = $this->_kstat($prefix . 'drop');
                     if ($cnt > 0) {
                         $dev->setDrops($cnt);
                     }
                     $cnt = $this->_kstat($prefix . 'obytes64');
                     if ($cnt > 0) {
                         $dev->setTxBytes($cnt);
                     }
                     $cnt = $this->_kstat($prefix . 'rbytes64');
                     if ($cnt > 0) {
                         $dev->setRxBytes($cnt);
                     }
                 }
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     if (CommonFunctions::executeProgram('ifconfig', $ar_buf[0], $bufr2, PSI_DEBUG) && !is_null($bufr2) && trim($bufr2) !== "") {
                         $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                         foreach ($bufe2 as $buf2) {
                             if (preg_match('/^\\s+ether\\s+(\\S+)/i', $buf2, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                             } elseif (preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         }
                     }
                     if (CommonFunctions::executeProgram('ifconfig', $ar_buf[0] . ' inet6', $bufr2, PSI_DEBUG) && !is_null($bufr2) && trim($bufr2) !== "") {
                         $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                         foreach ($bufe2 as $buf2) {
                             if (preg_match('/^\\s+inet6\\s+([^\\s\\/]+)/i', $buf2, $ar_buf2) && !preg_match('/^fe80::/i', $ar_buf2[1])) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         }
                     }
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
示例#13
0
 /**
  * network information
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('ifconfig', '-a', $bufr, PSI_DEBUG)) {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         foreach ($lines as $line) {
             if (preg_match("/^([^\\s:]+):\\saddress\\s(\\S+)\\snetmask/", $line, $ar_buf)) {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     $dev->setInfo($ar_buf[2]);
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
 /**
  * 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) {
                     /* no Address */
                     if (isset($ar_buf[11])) {
                         /* Idrop column exist*/
                         $dev->setTxBytes($ar_buf[9]);
                         $dev->setRxBytes($ar_buf[6]);
                         $dev->setErrors($ar_buf[4] + $ar_buf[8]);
                         $dev->setDrops($ar_buf[11] + $ar_buf[5]);
                     } else {
                         $dev->setTxBytes($ar_buf[8]);
                         $dev->setRxBytes($ar_buf[5]);
                         $dev->setErrors($ar_buf[4] + $ar_buf[7]);
                         $dev->setDrops($ar_buf[10]);
                     }
                 } else {
                     if (isset($ar_buf[12])) {
                         /* Idrop column exist*/
                         $dev->setTxBytes($ar_buf[10]);
                         $dev->setRxBytes($ar_buf[7]);
                         $dev->setErrors($ar_buf[5] + $ar_buf[9]);
                         $dev->setDrops($ar_buf[12] + $ar_buf[6]);
                     } 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);
             }
         }
     }
 }
示例#15
0
 /**
  * get network information
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('netstat', '-nbdi | cut -c1-24,42- | 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, 10);
             if (!empty($ar_buf[0])) {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[0]);
                 $dev->setTxBytes($ar_buf[8]);
                 $dev->setRxBytes($ar_buf[5]);
                 $dev->setErrors($ar_buf[4] + $ar_buf[7]);
                 if (isset($ar_buf[10])) {
                     $dev->setDrops($ar_buf[10]);
                 }
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && CommonFunctions::executeProgram('ifconfig', $ar_buf[0] . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                     $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                     foreach ($bufe2 as $buf2) {
                         if (preg_match('/^\\s+ether\\s+(\\S+)/i', $buf2, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . preg_replace('/:/', '-', $ar_buf2[1]));
                         } elseif (preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         } elseif ((preg_match('/^\\s+inet6\\s+([^\\s%]+)\\s+prefixlen/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\s+([^\\s%]+)%\\S+\\s+prefixlen/i', $buf2, $ar_buf2)) && !preg_match('/^fe80::/i', $ar_buf2[1])) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         }
                     }
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
示例#16
0
 /**
  * Network devices
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('netstat', '-ni | awk \'(NF ==10){print;}\'', $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]) && $ar_buf[0] !== 'Name') {
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[0]);
                 $results[$ar_buf[0]]['errs'] = $ar_buf[5] + $ar_buf[7];
                 preg_match('/^(\\D+)(\\d+)$/', $ar_buf[0], $intf);
                 $prefix = $intf[1] . ':' . $intf[2] . ':' . $intf[1] . $intf[2] . ':';
                 $cnt = $this->_kstat($prefix . 'drop');
                 if ($cnt > 0) {
                     $dev->setDrops($cnt);
                 }
                 $cnt = $this->_kstat($prefix . 'obytes64');
                 if ($cnt > 0) {
                     $dev->setTxBytes($cnt);
                 }
                 $cnt = $this->_kstat($prefix . 'rbytes64');
                 if ($cnt > 0) {
                     $dev->setRxBytes($cnt);
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }
示例#17
0
 /**
  * Network devices
  * includes also rx/tx bytes
  *
  * @return void
  */
 protected function _network()
 {
     if (CommonFunctions::rfts('/proc/net/dev', $bufr, 0, 4096, PSI_DEBUG)) {
         $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         foreach ($bufe as $buf) {
             if (preg_match('/:/', $buf)) {
                 list($dev_name, $stats_list) = preg_split('/:/', $buf, 2);
                 $stats = preg_split('/\\s+/', trim($stats_list));
                 $dev = new NetDevice();
                 $dev->setName(trim($dev_name));
                 $dev->setRxBytes($stats[0]);
                 $dev->setTxBytes($stats[8]);
                 $dev->setErrors($stats[2] + $stats[10]);
                 $dev->setDrops($stats[3] + $stats[11]);
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     if (CommonFunctions::executeProgram('ip', 'addr show ' . trim($dev_name), $bufr2, PSI_DEBUG) && trim($bufr2) != "" || CommonFunctions::executeProgram('ifconfig', trim($dev_name) . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                         $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                         $macaddr = "";
                         foreach ($bufe2 as $buf2) {
                             //                                if (preg_match('/^'.trim($dev_name).'\s+Link\sencap:Ethernet\s+HWaddr\s(\S+)/i', $buf2, $ar_buf2)
                             if (preg_match('/\\s+encap:Ethernet\\s+HWaddr\\s(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+ether\\s+(\\S+)\\s+txqueuelen/i', $buf2, $ar_buf2) || preg_match('/^\\s+link\\/ether\\s+(\\S+)\\s+brd/i', $buf2, $ar_buf2)) {
                                 //ip
                                 $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1]));
                             } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)\\s+P-t-P:(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask.+destination\\s+(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet\\s+([^\\/\\s]+).*peer\\s+([^\\/\\s]+).*\\s+scope\\s((global)|(host))/i', $buf2, $ar_buf2)) {
                                 //ip
                                 if ($ar_buf2[1] != $ar_buf2[2]) {
                                     $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1] . ";:" . $ar_buf2[2]);
                                 } else {
                                     $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                                 }
                             } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $buf2, $ar_buf2) || preg_match('/^' . trim($dev_name) . ':\\s+ip\\s+(\\S+)\\s+mask/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\saddr:\\s([^\\/\\s]+)(.+)\\s+Scope:[GH]/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6\\s+(\\S+)\\s+prefixlen(.+)((<global>)|(<host>))/i', $buf2, $ar_buf2) || preg_match('/^\\s+inet6?\\s+([^\\/\\s]+).*\\s+scope\\s((global)|(host))/i', $buf2, $ar_buf2)) {
                                 //ip
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . strtolower($ar_buf2[1]));
                             }
                         }
                     }
                     if ($macaddr != "") {
                         $dev->setInfo($macaddr . ($dev->getInfo() ? ';' . $dev->getInfo() : ''));
                     }
                     if (CommonFunctions::rfts('/sys/class/net/' . trim($dev_name) . '/speed', $buf, 1, 4096, false) && trim($buf) != "" && $buf > 0 && $buf < 65535) {
                         $speed = trim($buf);
                         if ($speed > 1000) {
                             $speed = $speed / 1000;
                             $unit = "G";
                         } else {
                             $unit = "M";
                         }
                         if (CommonFunctions::rfts('/sys/class/net/' . trim($dev_name) . '/duplex', $buf, 1, 4096, false) && trim($buf) != "") {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speed . $unit . 'b/s ' . strtolower(trim($buf)));
                         } else {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speed . $unit . 'b/s');
                         }
                     }
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     } elseif (CommonFunctions::executeProgram('ip', 'addr show', $bufr, PSI_DEBUG) && trim($bufr) != "") {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         $was = false;
         foreach ($lines as $line) {
             if (preg_match("/^\\d+:\\s+([^\\s:]+)/", $line, $ar_buf)) {
                 if ($was) {
                     if ($macaddr != "") {
                         $dev->setInfo($macaddr . ($dev->getInfo() ? ';' . $dev->getInfo() : ''));
                     }
                     if ($speedinfo != "") {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speedinfo);
                     }
                     $this->sys->setNetDevices($dev);
                 }
                 $speedinfo = "";
                 $macaddr = "";
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 if (CommonFunctions::executeProgram('ip', '-s link show ' . $ar_buf[1], $bufr2, PSI_DEBUG) && trim($bufr2) != "" && preg_match("/\n\\s+RX:\\s[^\n]+\n\\s+(\\d+)\\s+\\d+\\s+(\\d+)\\s+(\\d+)[^\n]+\n\\s+TX:\\s[^\n]+\n\\s+(\\d+)\\s+\\d+\\s+(\\d+)\\s+(\\d+)/m", $bufr2, $ar_buf2)) {
                     $dev->setRxBytes($ar_buf2[1]);
                     $dev->setTxBytes($ar_buf2[4]);
                     $dev->setErrors($ar_buf2[2] + $ar_buf2[5]);
                     $dev->setDrops($ar_buf2[3] + $ar_buf2[6]);
                 }
                 $was = true;
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     if (CommonFunctions::rfts('/sys/class/net/' . $ar_buf[1] . '/speed', $buf, 1, 4096, false) && trim($buf) != "") {
                         $speed = trim($buf);
                         if ($speed > 1000) {
                             $speed = $speed / 1000;
                             $unit = "G";
                         } else {
                             $unit = "M";
                         }
                         if (CommonFunctions::rfts('/sys/class/net/' . $ar_buf[1] . '/duplex', $buf, 1, 4096, false) && trim($buf) != "") {
                             $speedinfo = $speed . $unit . 'b/s ' . strtolower(trim($buf));
                         } else {
                             $speedinfo = $speed . $unit . 'b/s';
                         }
                     }
                 }
             } else {
                 if ($was) {
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         if (preg_match('/^\\s+link\\/ether\\s+(\\S+)\\s+brd/i', $line, $ar_buf2)) {
                             $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1]));
                         } elseif (preg_match('/^\\s+inet\\s+([^\\/\\s]+).*peer\\s+([^\\/\\s]+).*\\s+scope\\s((global)|(host))/i', $line, $ar_buf2)) {
                             if ($ar_buf2[1] != $ar_buf2[2]) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1] . ";:" . $ar_buf2[2]);
                             } else {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         } elseif (preg_match('/^\\s+inet6?\\s+([^\\/\\s]+).*\\s+scope\\s((global)|(host))/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . strtolower($ar_buf2[1]));
                         }
                     }
                 }
             }
         }
         if ($was) {
             if ($macaddr != "") {
                 $dev->setInfo($macaddr . ($dev->getInfo() ? ';' . $dev->getInfo() : ''));
             }
             if ($speedinfo != "") {
                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speedinfo);
             }
             $this->sys->setNetDevices($dev);
         }
     } elseif (CommonFunctions::executeProgram('ifconfig', '-a', $bufr, PSI_DEBUG)) {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         $was = false;
         foreach ($lines as $line) {
             if (preg_match("/^([^\\s:]+)/", $line, $ar_buf)) {
                 if ($was) {
                     $dev->setErrors($errors);
                     $dev->setDrops($drops);
                     if ($macaddr != "") {
                         $dev->setInfo($macaddr . ($dev->getInfo() ? ';' . $dev->getInfo() : ''));
                     }
                     if ($speedinfo != "") {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speedinfo);
                     }
                     $this->sys->setNetDevices($dev);
                 }
                 $errors = 0;
                 $drops = 0;
                 $speedinfo = "";
                 $macaddr = "";
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 $was = true;
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                     if (CommonFunctions::rfts('/sys/class/net/' . $ar_buf[1] . '/speed', $buf, 1, 4096, false) && trim($buf) != "") {
                         $speed = trim($buf);
                         if ($speed > 1000) {
                             $speed = $speed / 1000;
                             $unit = "G";
                         } else {
                             $unit = "M";
                         }
                         if (CommonFunctions::rfts('/sys/class/net/' . $ar_buf[1] . '/duplex', $buf, 1, 4096, false) && trim($buf) != "") {
                             $speedinfo = $speed . $unit . 'b/s ' . strtolower(trim($buf));
                         } else {
                             $speedinfo = $speed . $unit . 'b/s';
                         }
                     }
                     if (preg_match('/^' . $ar_buf[1] . '\\s+Link\\sencap:Ethernet\\s+HWaddr\\s(\\S+)/i', $line, $ar_buf2)) {
                         $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1]));
                     } elseif (preg_match('/^' . $ar_buf[1] . ':\\s+ip\\s+(\\S+)\\s+mask/i', $line, $ar_buf2)) {
                         $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                     }
                 }
             } else {
                 if ($was) {
                     if (preg_match('/\\sRX bytes:(\\d+)\\s/i', $line, $ar_buf2)) {
                         $dev->setRxBytes($ar_buf2[1]);
                     }
                     if (preg_match('/\\sTX bytes:(\\d+)\\s/i', $line, $ar_buf2)) {
                         $dev->setTxBytes($ar_buf2[1]);
                     }
                     if (preg_match('/\\sRX packets:\\d+\\serrors:(\\d+)\\sdropped:(\\d+)/i', $line, $ar_buf2)) {
                         $errors += $ar_buf2[1];
                         $drops += $ar_buf2[2];
                     } elseif (preg_match('/\\sTX packets:\\d+\\serrors:(\\d+)\\sdropped:(\\d+)/i', $line, $ar_buf2)) {
                         $errors += $ar_buf2[1];
                         $drops += $ar_buf2[2];
                     }
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         if (preg_match('/\\s+encap:Ethernet\\s+HWaddr\\s(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+ether\\s+(\\S+)\\s+txqueuelen/i', $line, $ar_buf2)) {
                             $macaddr = preg_replace('/:/', '-', strtoupper($ar_buf2[1]));
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)\\s+P-t-P:(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask.+destination\\s+(\\S+)/i', $line, $ar_buf2)) {
                             if ($ar_buf2[1] != $ar_buf2[2]) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1] . ";:" . $ar_buf2[2]);
                             } else {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             }
                         } elseif (preg_match('/^\\s+inet\\saddr:(\\S+)/i', $line, $ar_buf2) || preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $line, $ar_buf2) || preg_match('/^\\s+inet6\\saddr:\\s([^\\/\\s]+)(.+)\\s+Scope:[GH]/i', $line, $ar_buf2) || preg_match('/^\\s+inet6\\s+(\\S+)\\s+prefixlen(.+)((<global>)|(<host>))/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . strtolower($ar_buf2[1]));
                         }
                     }
                 }
             }
         }
         if ($was) {
             $dev->setErrors($errors);
             $dev->setDrops($drops);
             if ($macaddr != "") {
                 $dev->setInfo($macaddr . ($dev->getInfo() ? ';' . $dev->getInfo() : ''));
             }
             if ($speedinfo != "") {
                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $speedinfo);
             }
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#18
0
 /**
  * network information
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::executeProgram('ifconfig', '', $bufr, PSI_DEBUG)) {
         $lines = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         $notwas = true;
         foreach ($lines as $line) {
             if (preg_match("/^([^\\s:]+)/", $line, $ar_buf)) {
                 if (!$notwas) {
                     $this->sys->setNetDevices($dev);
                 }
                 $dev = new NetDevice();
                 $dev->setName($ar_buf[1]);
                 $notwas = false;
             } else {
                 if (!$notwas) {
                     if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS) {
                         if (preg_match('/^\\s+address:\\s*(\\S+)/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         } elseif (preg_match('/^\\s+inet\\s+(\\S+)\\s+netmask/i', $line, $ar_buf2)) {
                             $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                         }
                     }
                 }
             }
         }
         if (!$notwas) {
             $this->sys->setNetDevices($dev);
         }
     }
 }
示例#19
0
 /**
  * Network devices
  * includes also rx/tx bytes
  *
  * @return void
  */
 private function _network()
 {
     if (CommonFunctions::rfts('/proc/net/dev', $bufr)) {
         $bufe = preg_split("/\n/", $bufr, -1, PREG_SPLIT_NO_EMPTY);
         foreach ($bufe as $buf) {
             if (preg_match('/:/', $buf)) {
                 list($dev_name, $stats_list) = preg_split('/:/', $buf, 2);
                 $stats = preg_split('/\\s+/', trim($stats_list));
                 $dev = new NetDevice();
                 $dev->setName(trim($dev_name));
                 $dev->setRxBytes($stats[0]);
                 $dev->setTxBytes($stats[8]);
                 $dev->setErrors($stats[2] + $stats[10]);
                 $dev->setDrops($stats[3] + $stats[11]);
                 if (defined('PSI_SHOW_NETWORK_INFOS') && PSI_SHOW_NETWORK_INFOS && CommonFunctions::executeProgram('ifconfig', trim($dev_name) . ' 2>/dev/null', $bufr2, PSI_DEBUG)) {
                     $bufe2 = preg_split("/\n/", $bufr2, -1, PREG_SPLIT_NO_EMPTY);
                     foreach ($bufe2 as $buf2) {
                         if (preg_match('/\\s+encap:Ethernet\\s+HWaddr\\s(\\S*)/i', $buf2, $ar_buf2)) {
                             $dev->setInfo(preg_replace('/:/', '-', $ar_buf2[1]));
                         } else {
                             if (preg_match('/^\\s+inet\\saddr:(\\S*)/i', $buf2, $ar_buf2)) {
                                 $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                             } else {
                                 if (preg_match('/^\\s+inet6\\saddr:\\s([^\\/]*)(.*)\\s+Scope:[GH]/i', $buf2, $ar_buf2)) {
                                     $dev->setInfo(($dev->getInfo() ? $dev->getInfo() . ';' : '') . $ar_buf2[1]);
                                 }
                             }
                         }
                     }
                 }
                 $this->sys->setNetDevices($dev);
             }
         }
     }
 }