Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-09-12 00:49:35

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

[SOLVED]Php + apache2. Blad wykonania funkcji.

Witam,

Mam taki problem ktorego niestety po wielogodzinnym googlaniu nie potrafie rozwiazac. Mianowicie napisalem skrypt w php do odczytywania mac`adresow kart sieciowych uzytkownikow sieci. Wyglada on nastepujaco

Kod:

function getmac(){
$ip = $_SERVER['REMOTE_ADDR'];

exec('ping '.$ip.' -c 1');
exec('sleep 2s');
exec('/usr/sbin/arp -na '.$ip , $answer);

eregi('([0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2})',$answer[0],$result);
$mac = $result[0];

return $mac;
}

jednak niestety adres mac nie jest wogole odczytywany. zgodnie z informacjami wyczytanymi w necie wylaczylem w php.ini safe_mode oraz dodalem w /etc/sudoers linie

Kod:

www-data ALL=NOPASSWD:/usr/sbin/arp

jako ze apache2 startuje jako uzytkownik www-data.
skrypt zostal wpisany do grupy www-data.
Jednak wszystkie te zabiegi nie przyniosły efektu, a mnie pomysły juz sie skonczyły.
Dodam rowniez ze skrypt ten jest wykonywany na serwerze Debian 6.0 2.6.33-grsec z bardzo rozbudowanym firewallem w iptables.
Niewiem juz sam czy to problem z komunikacja(firewall blokuje), czy z wykonywaniem przez uzytkownika apache.
Prosze o rady.

Ostatnio edytowany przez quartist (2011-09-12 23:11:06)

Offline

 

#2  2011-09-12 01:14:22

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

wydaje mi się że to

Kod:

exec('/usr/sbin/arp -na '.$ip , $answer);

powinno wyglądać tak 

Kod:

exec('sudo /usr/sbin/arp -na '.$ip , $answer);

skoro używasz sudo. Poza tym nie liczyłbym na to, że uzyskać mac usera ;)


LRU: #472938
[b]napisz do mnie:[/b] ola@mojmail.eu
[url=http://valhalla.org.pl]Hołmpejdż[/url] | [url=http://valhalla.org.pl/foto]Galerie[/url] | [url=http://valhalla.org.pl/tech]"Twórczość"[/url] || [url=http://img.munn.in]Free Image Hosting[/url]

Offline

 

#3  2011-09-12 02:25:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

[url=http://packages.debian.org/squeeze/arpwatch]arpwatch[/url] jest od tego, gotowy, i za każdym razem, kiedy zobaczy nowe urządzenie, wysyła maila z zawiadomieniem.
Jest też trochę skryptów  dodo obsługi arpwatcha przez www, np ten:
http://www.hackerskitchen.com/bill/arpview/

Poza tym pozwolenie na exec i sudo z poziomu serwera www, w dodatku z poziomu php, to strzał w stopę, takie rzeczy raczej robi się w skryptach cgi, bo moduł php do apacha to trochę nie ta liga.

Ostatnio edytowany przez Jacekalex (2011-09-12 10:41:13)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2011-09-12 08:37:21

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

Kod:

<?php
$mac = system('arp -an | awk \'{print $4}\'');
echo $mac;
?>

Tylko pobiera mi podwójnie i na razie nie czaję dlaczego
Serwer:Lighttpd
Zainstalowane php5-cgi
uruchomione moduły fastcgi i fastcgi-php

W sumie to musisz jeszcze dodać jedną zmienną z ping do hosta

Kod:

<?php
//$mac = system('arp -an | awk \'{print $4}\'');
$ip = $_SERVER[REMOTE_ADDR];
$ping = system('ping -c5 $ip');
echo "$ip <br />";
$mac = system('arp -an $ip | cut -d \' \' -f4 ');
echo $mac;
?>

Ale pobieranie adresów MAC ma zastosowanie tylko w sieci lokalnej

Ostatnio edytowany przez hello_world (2011-09-12 10:29:31)

Offline

 

#5  2011-09-12 11:13:10

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

Uzywam arpwatch(aby widziec kto mi sie podłącza do sieci) maile od niego z macami dostaje i jest bardzo dobrze. Funkcja ktora Wam przedstawilem to wycinek panelu administracyjnego ktory pobiera ten mac od uzytkownika i potem wypycha do bazy msql wraz z innymi danymi.

Opcja z dodaniem 'sudo' nie przynosi zadnych efektow niestety.

Co do kodu:

Kod:

<?php
//$mac = system('arp -an | awk \'{print $4}\'');
$ip = $_SERVER[REMOTE_ADDR];
$ping = system('ping -c5 $ip');
echo "$ip <br />";
$mac = system('arp -an $ip | cut -d \' \' -f4 ');
echo $mac;
?>

efekt po wykonaniu jest taki ze pokazuje tylko adres ip. nic pozatym.

Ostatnio edytowany przez ArnVaker (2011-09-12 13:19:17)

Offline

 

#6  2011-09-12 23:14:28

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

Problem rozwiazany. Problem lezal w php.ini (/etc/php5/apache2/php.ini)

W pliku tym była linia:

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Nalezalo (w moim wypadku) usunac wpis "exac";
Wszystko zaczelo pieknie smigac.
Dziekuje wszystkim userom za pomoc oraz porady.

ZAMYKAM

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.012 seconds, 13 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00136 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.21.206' WHERE u.id=1
0.00190 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.21.206', 1732607108)
0.00064 SELECT * FROM punbb_online WHERE logged<1732606808
0.00067 DELETE FROM punbb_online WHERE ident='3.15.211.41'
0.00063 DELETE FROM punbb_online WHERE ident='57.141.0.5'
0.00020 SELECT topic_id FROM punbb_posts WHERE id=181217
0.00114 SELECT id FROM punbb_posts WHERE topic_id=19685 ORDER BY posted
0.00040 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19685 AND t.moved_to IS NULL
0.00041 SELECT search_for, replace_with FROM punbb_censoring
0.00077 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19685 ORDER BY p.id LIMIT 0,25
0.00087 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19685
Total query time: 0.00916 s