mirror of
https://github.com/ShaYmez/ezservermonitor-web.git
synced 2024-12-18 23:55:53 -05:00
Some issues with Arch or old Ubuntu
This commit is contained in:
parent
258e0edbaa
commit
c3ec82dd6f
@ -38,6 +38,31 @@ class Misc
|
|||||||
return $_SERVER['SERVER_ADDR'];
|
return $_SERVER['SERVER_ADDR'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a command that exists in the system among $cmds
|
||||||
|
*/
|
||||||
|
public static function whichCommand($cmds, $args = '', $returnWithArgs = true)
|
||||||
|
{
|
||||||
|
$return = '';
|
||||||
|
|
||||||
|
foreach ($cmds as $cmd)
|
||||||
|
{
|
||||||
|
if (trim(shell_exec($cmd.$args)) != '')
|
||||||
|
{
|
||||||
|
$return = $cmd;
|
||||||
|
|
||||||
|
if ($returnWithArgs)
|
||||||
|
$return .= $args;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows to pluralize a word based on a number
|
* Allows to pluralize a word based on a number
|
||||||
* Ex : echo 'mot'.Misc::pluralize(5); ==> prints mots
|
* Ex : echo 'mot'.Misc::pluralize(5); ==> prints mots
|
||||||
|
@ -1,12 +1,70 @@
|
|||||||
<?php
|
<?php
|
||||||
require 'Utils/Misc.class.php';
|
require 'Utils/Misc.class.php';
|
||||||
|
|
||||||
$datas = array();
|
$datas = array();
|
||||||
$network = array();
|
$network = array();
|
||||||
|
|
||||||
$ifconfig = trim(shell_exec('which ifconfig'));
|
|
||||||
|
|
||||||
if (!(exec($ifconfig.' |awk -F \'[/ |: ]\' \'{print $1}\' |sed -e \'/^$/d\'', $getInterfaces)))
|
// Possible commands for ifconfig and ip
|
||||||
|
$commands = array(
|
||||||
|
'ifconfig' => array('ifconfig', '/sbin/ifconfig', '/usr/bin/ifconfig', '/usr/sbin/ifconfig'),
|
||||||
|
'ip' => array('ip', '/bin/ip', '/sbin/ip', '/usr/bin/ip', '/usr/sbin/ip'),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Returns command line for retreive interfaces
|
||||||
|
function getInterfacesCommand($commands)
|
||||||
|
{
|
||||||
|
$ifconfig = Misc::whichCommand($commands['ifconfig'], ' | awk -F \'[/ |: ]\' \'{print $1}\' | sed -e \'/^$/d\'');
|
||||||
|
|
||||||
|
if (!empty($ifconfig))
|
||||||
|
{
|
||||||
|
return $ifconfig;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ip_cmd = Misc::whichCommand($commands['ip'], ' -V', false);
|
||||||
|
|
||||||
|
if (!empty($ip_cmd))
|
||||||
|
{
|
||||||
|
return $ip_cmd.' -oneline link show | awk \'{print $2}\' | sed "s/://"';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns command line for retreive IP address from interface name
|
||||||
|
function getIpCommand($commands, $interface)
|
||||||
|
{
|
||||||
|
$ifconfig = Misc::whichCommand($commands['ifconfig'], ' '.$interface.' | awk \'/inet / {print $2}\' | cut -d \':\' -f2');
|
||||||
|
|
||||||
|
if (!empty($ifconfig))
|
||||||
|
{
|
||||||
|
return $ifconfig;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ip_cmd = Misc::whichCommand($commands['ip'], ' -V', false);
|
||||||
|
|
||||||
|
if (!empty($ip_cmd))
|
||||||
|
{
|
||||||
|
return 'for family in inet inet6; do '.
|
||||||
|
$ip_cmd.' -oneline -family $family addr show '.$interface.' | grep -v fe80 | awk \'{print $4}\' | sed "s/\/.*//"; ' .
|
||||||
|
'done';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$getInterfaces_cmd = getInterfacesCommand($commands);
|
||||||
|
|
||||||
|
if (is_null($getInterfaces_cmd) || !(exec($getInterfaces_cmd, $getInterfaces)))
|
||||||
{
|
{
|
||||||
$datas[] = array('interface' => 'N.A', 'ip' => 'N.A');
|
$datas[] = array('interface' => 'N.A', 'ip' => 'N.A');
|
||||||
}
|
}
|
||||||
@ -15,15 +73,26 @@ else
|
|||||||
foreach ($getInterfaces as $name)
|
foreach ($getInterfaces as $name)
|
||||||
{
|
{
|
||||||
$ip = null;
|
$ip = null;
|
||||||
exec($ifconfig.' '.$name.' | awk \'/inet / {print $2}\' | cut -d \':\' -f2', $ip);
|
|
||||||
|
|
||||||
if (!isset($ip[0]))
|
$getIp_cmd = getIpCommand($commands, $name);
|
||||||
$ip[0] = '';
|
|
||||||
|
|
||||||
$network[] = array(
|
if (is_null($getIp_cmd) || !(exec($getIp_cmd, $ip)))
|
||||||
'name' => $name,
|
{
|
||||||
'ip' => $ip[0],
|
$network[] = array(
|
||||||
);
|
'name' => $name,
|
||||||
|
'ip' => 'N.A',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!isset($ip[0]))
|
||||||
|
$ip[0] = '';
|
||||||
|
|
||||||
|
$network[] = array(
|
||||||
|
'name' => $name,
|
||||||
|
'ip' => $ip[0],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($network as $interface)
|
foreach ($network as $interface)
|
||||||
|
Loading…
Reference in New Issue
Block a user