'Ping' kullanmadan Dinamik Dil Ping

5 Cevap php

Ben 'ping' uygulamasını (: icmp açık soket: İşleme izin verilmedi ping) kullanmak için izin değilim, bir Linux sistemi üzerinde değilim. Bir ana 'canlı' Ancak, eğer ben (PHP, fakat ben (gerekirse) herhangi bir komut / program için çağrı bir exec kullanabilirsiniz) yazıyorum ihtiyacı komut belirlemek için. Nasıl 'ping' kullanmadan bu konuda gidebilir?

5 Cevap

Ping bunu yapamıyorsanız, farklı bir dilde yapamazsınız. Burada neden anlamanıza yardımcı olabilecek bir benzetme. Orada dosya sisteminde bir dosya olduğunu ve onun içeriğini istediğinizi varsayalım. Sen cat filename çalıştırın ve diyor cat: filename: Permission denied. Perl (veya başka bir dil) C burada yaptım daha adil olacak sizce? Haydi deneyelim:

#!/usr/bin/perl

use strict;
use warnings;


die "usage: $0 filename" unless @ARGV == 1;
my $filename = shift;

open my $fh, "<", $filename
    or die "could not open $filename: $!\n";

print while <$fh>;

Dosya karşı çalıştırdığınızda diyor could not open filename: Permission denied. Olursa olsun kullanmaya çalıştığınızda hangi dili, sen almak için gidiyoruz Operation not permitted.

Bu makine bir canlı olup olmadığını belirlemenin başka bir yöntem vardır, bahsedilen. Her makinede çalışan olduğu bilinen bir sunucu varsa, ona bağlanmayı deneyebilirsiniz. Eğer bağlantı (örneğin, giriş) bitirmek gerekmez unutmayın, başarılı bir bağlantı başlatabilir sadece gerçeği kutusu kadar olduğunu bilmek yeterli.

Bir ping yapmak için (ICMP) root erişimi gerekir.

The only way you have is to do a TCP or UDP ping. If you want an example check the code of Cacti or you can use hping to do it for you

Yoksa Unix üzerinde "ping" programında SUID biraz ayarlayabilirsiniz ;)

http://us2.php.net/manual-lookup.php?pattern=socket

Eğer ping ile bir soket açamıyor Ama bunlardan herhangi birini kullanabilirsiniz düşüktür. Barındırma sağlayıcı konuşun.

PHP Manual bir ping in PHP bir uygulama için kullanıcı tarafından sağlanan kodu verir. Bu ya bu kullanmak mümkün olacak olası değil ne yazık ki, bu root erişimi gerektirir. Bir alternatif curl kullanımı ve tarafından döndürülen değerlere bakmak için curl_getinfo():

c = curl_init('http://www.site.com/');
curl_exec($c);
$info = curl_getinfo($ch);

Bu ping eşdeğerdir, ancak ihtiyaçlarınız için hala belki uygun olan yaklaşamaz.