Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Funkcja system - ukrycie drukowania
mariusz g
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

Ostrzeżenie: (0%)
-----


witam

Chciałbym aby poniższy skrypt drukował tylko sam efekt końcowy - adres mac
Co zrobić żeby nie drukował pingów i zapytania arp ?


  1. <?php
  2. $ip = gethostbyname("nazwa komputera");
  3. $ping="ping ".$ip." -n 1";
  4.  
  5. //echo '<pre>';
  6. $result=system($ping);
  7. //echo '</pre>';
  8.  
  9. $arp="arp -a ".$ip;
  10. //echo '<pre>';
  11. $result=system($arp);
  12. //echo '<pre>';
  13.  
  14. $dane=explode($ip." ", $result);
  15. $mac=substr($dane[1],8,17);
  16.  
  17. echo $mac;
  18. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Użyj funkcji exec():

http://docs.php.net/manual/en/function.exec.php

Ponadto polecenie ping ma "trochę" inną składnię, a sam skrypt nie jest zabezpieczony przed sytuacją, gdy arp zwraca błąd...


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
mariusz g
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

Ostrzeżenie: (0%)
-----


chcę aby mac automatycznie dodawał się do bazy a z exec() chyba nie da rady
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


A co ma wspólnego exec() z bazą danych? Zajrzałeś chociaż pod podany odnośnik czy tak sobie napisałeś, bo gdzieś tam w którymś kościele dzwonią, ale nie wiadomo w którym? Jak piszę, że exec(), to exec() i tyle. Chcesz, by nie wyświetlało wyjścia, to podałem Ci funkcję, która nie wyświetla wyjścia. Związek z tym, co później zrobisz z tymi danymi - zapiszesz do bazy, do pliku, wydrukujesz i wyślesz na księżyc (niepotrzebne skreślić) jest zerowy.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
mariusz g
post
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 25.03.2006

Ostrzeżenie: (0%)
-----


Zrobiłem tak:
Działa - pytanie czy może tak pozostać


  1. <?php
  2. $computername = "nazwa kompa";
  3.  
  4. $ip = gethostbyname($computername);
  5. if($ip == $computername ) {
  6.    echo "Brak ip";
  7. }else{
  8.    exec("ping ".$ip." -n 1 -w 90 && exit", $output);
  9.    //echo '<pre>';
  10.    //print_r($output);
  11.    //echo '</pre>';
  12.    exec("arp ".$ip." -a && exit", $output2);
  13.    //echo '<pre>';
  14.    //print_r($output2);
  15.    //echo '</pre>';
  16.    $dane=explode(" ", $output2[3]);
  17.    //echo '<pre>';
  18.    //print_r($dane);
  19.    //echo '</pre>';
  20.    $x=1;
  21.    while($x <= 20){
  22.       $szukaj_mac = 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})',$dane[$x],$result);
  23.       if ($szukaj_mac){
  24.          $adres_mac = $result[0];
  25.          $x =20;
  26.       }
  27.       $x++;
  28.    }
  29. }    
  30.    
  31. echo $adres_mac;
  32. ?>
Go to the top of the page
+Quote Post
Zyx
post
Post #6





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Sprawdź jeszcze, czy istnieje $output2[3] - arp nie musi tyle linijek zwrócić, szczególnie w przypadku błędu. Ponadto wywal eregi, a użyj wyrażeń regularnych Perla (funkcja preg_match()).


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:29