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
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
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
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
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.
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Link
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 02:35