Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> fsockopen zamiast ping ?
carramba
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 29.10.2003
Skąd: Toruń

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


Panowie mam następujący problem, na niektórych serwerach
funkcje systemowe typu exec, czy passthru sa zabkowane więc,
normalnego pinga nie wykonam. I tu pojawia się pomysł z wykorzystaniem
gniazd tyle tylko że coś takiego :

  1. <?php
  2. $fp = @fsockopen(&#092;"udp://$ip\", 13, $errno, $errstr);
  3. if ($fp) { 
  4.        $obrazek = 'system_on'; 
  5. } else { 
  6.        $obrazek = 'system_off'; 
  7. } 
  8. fclose ($fp); 
  9. ?>


zupełnie nie działa, ma ktoś z was może pomysł co robię źle ?

Ten post edytował carramba 6.07.2004, 15:18:08


--------------------
long hard road out of hell
Go to the top of the page
+Quote Post
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Czy przypadkiem ping nie siedzi na porcie 7 ?
Poza tym musisz wyslach bodajze \0 na ten port i czekac na zwrot.
Go to the top of the page
+Quote Post
Sh4dow
post
Post #3





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


Zajzalem w trzewia boga manuala i ujzalem stwora:
  1. <?php
  2.  
  3. class Net_Ping
  4. {
  5. var $icmp_socket;
  6. var $request;
  7. var $request_len;
  8. var $reply;
  9. var $errstr;
  10. var $time;
  11. var $timer_start_time;
  12. function Net_Ping()
  13. {
  14.  $this->icmp_socket = socket_create(AF_INET, SOCK_RAW, 1);
  15.  socket_set_block($this->icmp_socket);
  16. }
  17.  
  18. function ip_checksum($data)
  19. {
  20.  for($i=0;$i<strlen($data);$i += 2)
  21.  {
  22.  if($data[$i+1]) $bits = unpack('n*',$data[$i].$data[$i+1]);
  23.  else $bits = unpack('C*',$data[$i]);
  24.  $sum += $bits[1];
  25.  }
  26.  
  27.  while ($sum>>16) $sum = ($sum & 0xffff) + ($sum >> 16);
  28.  $checksum = pack('n1',~$sum);
  29.  return $checksum;
  30. }
  31.  
  32. function start_time()
  33. {
  34.  $this->timer_start_time = microtime();
  35. }
  36.  
  37. function get_time($acc=2)
  38. {
  39.  // format start time
  40.  $start_time = explode (&#092;" \", $this->timer_start_time);
  41.  $start_time = $start_time[1] + $start_time[0];
  42.  // get and format end time
  43.  $end_time = explode (&#092;" \", microtime());
  44.  $end_time = $end_time[1] + $end_time[0];
  45.  return number_format ($end_time - $start_time, $acc);
  46. }
  47.  
  48. function Build_Packet()
  49. {
  50.  $data = &#092;"abcdefghijklmnopqrstuvwabcdefghi\"; // the actual test data
  51.  $type = &#092;"x08\"; // 8 echo message; 0 echo reply message
  52.  $code = &#092;"x00\"; // always 0 for this program
  53.  $chksm = &#092;"x00x00\"; // generate checksum for icmp request
  54.  $id = &#092;"x00x00\"; // we will have to work with this later
  55.  $sqn = &#092;"x00x00\"; // we will have to work with this later
  56.  
  57.  // now we need to change the checksum to the real checksum
  58.  $chksm = $this->ip_checksum($type.$code.$chksm.$id.$sqn.$data);
  59.  
  60.  // now lets build the actual icmp packet
  61.  $this->request = $type.$code.$chksm.$id.$sqn.$data;
  62.  $this->request_len = strlen($this->request);
  63. }
  64.  
  65. function Ping($dst_addr,$timeout=5,$percision=3)
  66. {
  67.  // lets catch dumb people
  68.  if ((int)$timeout <= 0) $timeout=5;
  69.  if ((int)$percision <= 0) $percision=3;
  70.  
  71.  // set the timeout
  72.  socket_set_option($this->icmp_socket,
  73.  SOL_SOCKET, // socket level
  74.  SO_RCVTIMEO, // timeout option
  75.  array(
  76.  &#092;"sec\"=>$timeout, // Timeout in seconds
  77.  &#092;"usec\"=>0 // I assume timeout in microseconds
  78.  )
  79.  );
  80.  
  81.  if ($dst_addr)
  82.  {
  83.  if (@socket_connect($this->icmp_socket, $dst_addr, NULL))
  84.  {
  85.  
  86.  } else {
  87.  $this->errstr = &#092;"Cannot connect to $dst_addr\";
  88.  return FALSE;
  89.  }
  90.  $this->Build_Packet();
  91.  $this->start_time();
  92.  socket_write($this->icmp_socket, $this->request, $this->request_len);
  93.  if (@socket_recv($this->icmp_socket, &$this->reply, 256, 0))
  94.  {
  95.  $this->time = $this->get_time($percision);
  96.  return $this->time;
  97.  } else {
  98.  $this->errstr = &#092;"Timed out\";
  99.  return FALSE;
  100.  }
  101.  } else {
  102.  $this->errstr = &#092;"Destination address not specified\";
  103.  return FALSE;
  104.  }
  105. }
  106. }
  107.  
  108. $ping = new Net_Ping;
  109. $ping->ping(&#092;"www.google.ca\");
  110.  
  111. if ($ping->time)
  112. echo &#092;"Time: \".$ping->time;
  113. else
  114. echo $ping->errstr;
  115.  
  116. ?>


trzewia jego nie powiedziala co zrobic, to juz musisz sam zadecydowac, ja tylko pokazalem


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat(Seth @ 2004-07-06 20:03:06)
Czy przypadkiem ping nie siedzi na porcie 7 ?

Gwoli ścisłości, ping dziala na protokole ICMP a nie TCP/UDP, w ICMP nie ma portow.. a rozwiazanie widze juz podal Sh4dow


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
Indianin
post
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


Cytat
rozwiazanie widze juz podal Sh4dow
tylko gdy jest włączona funkcja socket_create() . Mam pecha
Go to the top of the page
+Quote Post
Sh4dow
post
Post #6





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


przeszukaj manuala moze cos znajdziesz, najbardziej wartosciowe sa komentarze


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Indianin
post
Post #7





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Hamburg / Darlowo

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


Próbowałem kilanaście skryptów do pingowania . żaden na moim servie nie działa . Na localu i kilu testowych kontach działały .
Czy funkcjie pingujące są niebezpieczne czy jaki diabeł ?. Dlaczego providerzy wyłączają je .?
Go to the top of the page
+Quote Post
Dabroz
post
Post #8





Grupa: Zarejestrowani
Postów: 286
Pomógł: 0
Dołączył: 1.11.2003
Skąd: Poland, Płock

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


A czy funkcja mail jest niebezpieczna?? A jest czesto wylaczana na darmowych kontach... (spam, of course)

A może skoro funkcje są pozamykane, to może warto skorzystać z jakiegoś zdalnego skryptu?


--------------------
Go to the top of the page
+Quote Post
carramba
post
Post #9





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 29.10.2003
Skąd: Toruń

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


very nice działa jak należy, bardzo dziękuje.
hmmm rozumiem ze blokowanie exec jest
konieczne, ale czasami amdinistratorzy systemow
po prostu przeginają z tym bezpieczeństwem.


--------------------
long hard road out of hell
Go to the top of the page
+Quote Post
Chewolf
post
Post #10





Grupa: Zarejestrowani
Postów: 335
Pomógł: 0
Dołączył: 15.11.2003

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


Ja mialem podobny problem, musialem sprawdzic jakie serwery GG dzialaja. Uzywalem podobnego skryptu, lecz nie dzialal lub zle dzialal. Okazalo sie ze trzeba tylko zmienic port na 8074 tongue.gif Link
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: 19.08.2025 - 11:30