----- Original Message ----- From: "Tomasz Chiliński" tomasz.chilinski@chilan.com To: "lista użytkowników LMS" lms@lists.lms.org.pl Sent: Saturday, October 20, 2012 12:34 PM Subject: Re: [lms] arpping
W dniu 20.10.2012 09:14, Kacper Nowak napisał(a):
No to że trzeba dodać do sudo to wiem. Znalazłem dodatkowo q logu apache-a informację sh: arping not found, i kiedy przerzuciłem go do /usr/bin lub /bin to informacja ta zmieniła się na arping: must run as root Problem w tym że ja używam arpinga przez apacha winnym skrypcie php i tam działa. Pytanie czy lms faktycznie używa sudo i skąd ma ścieżkę do arpinga?
Zawsze możesz dla próby dodać sticky bit do pliku arpping i ustawić mu chown root:root arpping, wtedy zawsze odpali się na prawach roota.
Nie sticky tylko suid.
Nie wiem czemu każdy węszył wokół uprawnień. Udało mi się rozwiązać problem. Przyczyną było to że arping w paczkach debiana zwraca na ekran nie co inaczej wyglądające wyniki niż te które są obsługiwane w module lms ping.php Poniżej zamieszczam co zmodyfikowałem, tak dla potomnych. To co zakomentowane to to co było, to co poniżej to moje poprawki.
case 2: if (empty($CONFIG['phpui']['arping_helper'])) $cmd = 'arping %i -c 1 -w 1.0'; else $cmd = $CONFIG['phpui']['arping_helper']; // $summary_regexp = '/^sent+[[:blank:]]+[0-9]+[[:blank:]]+probes/i'; // $reply_regexp = '/unicast/i'; // $reply_detailed_regexp = '/\ [(.*?)].+\ ([0-9.]+.+)$/'; $summary_regexp = '/^[0-9]+[[:blank:]]+packets[[:blank:]]+transmitted/i'; $reply_regexp = '/index/'; $reply_detailed_regexp = '/^([0-9]+).+ndex=([0-9]+).+time=([0-9.]+.+)$/';
...
if ($type == 1) { $output .= trans('$a bytes from $b: icmp_req=$c ttl=$d time=$e', $matches[1], $ipaddr, $oldreceived + $matches[2], $matches[3], $matches[4]).'<br>'; $times[] = $matches[4]; } elseif ($type == 2) { // $output .= trans('Unicast reply from $a [$b]: time=$c', // $ipaddr, $matches[1], $matches[2]).'<br>'; // $times[] = $matches[2]; $output .= trans('$a bytes from $b: index=$c time=$d', $matches[1], $ipaddr, $oldreceived + $matches[2], $matches[3]).'<br>'; $times[] = $matches[3];