On Sat, Apr 16, 2005 at 09:42:47AM +0200, Andrzej Boczek wrote:
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
Andrzej Boczek boczi<at>boczi.net http://www.rwo.pl/
| "The difference is that it takes a lot of courage to | | fuck other peoples' wives but even cowards can steal software" | | Robert Maron |
w CVS juz poprawione. (to dziwne - wysylam tego maila po raz drugi bo pierwszy jakos nie zadzialal ale pylo pozno wiec moze to ja cos napsulem ;-)).
uczestnicy (1)
-
KubaTyszko