Błąd w metodzie LMS->GetNodeByMAC
Przyjrzałem się metodzie GetNodeByMAC i według mnie zawiera ona buga.
function GetNodeByMAC($ip) { exec("arp -an | grep -v incompl | grep $ip" ,$result); foreach ($result as $arpline) { list($fqdn,$ip,$at,$mac,$hwtype,$perm) = explode(' ',$arpline); $ip = str_replace('(','',str_replace(')','',$ip));
$result['mac'] = $mac; $result['ip'] = $ip; $result['longip'] = ip_long($ip); $result['nodename'] = $this->GetNodeNameByMAC($mac); } return $result; }
bug polega na tym, że możemy trafić nie ten adres co trzeba, ponieważ grep wyszuka nam tylko zgodne prefixy adresów. Jeśli będziemy poszukiwali na przykład adresu dla 192.168.0.2, możemy przypadkiem dostać adres dla 192.168.0.250 lub 192.168.0.29
Proponuję taką modyfikację:
function GetNodeByMAC($ip) { exec("arp -an | grep -v incompl | grep $ip" ,$result); foreach ($result as $arpline) { list($fqdn,$arp_ip,$at,$mac,$hwtype,$perm) = explode(' ',$arpline); $arp_ip = str_replace('(','',str_replace(')','',$arp_ip)); if ($ip==$arp_ip) { $result['mac'] = $mac; $result['ip'] = $ip; $result['longip'] = ip_long($ip); $result['nodename'] = $this->GetNodeNameByMAC($mac); } } return $result; }
Używam: LMS version 1.4.1 Teyla
Pozdrawiam
Boczi
uczestnicy (1)
-
Andrzej Boczek