Frage

ich auf einem Linux-System bin, wo ich darf nicht die ‚Ping‘ Anwendung verwenden (ping: icmp offene Buchse: Operation nicht erlaubt). Doch das Skript, das ich (PHP, aber ich kann eine exec () Aufruf an jeden Skript / Programm verwenden, wenn erforderlich) schreibe muss, um zu bestimmen, ob ein Host ‚lebendig‘ ist. Wie kann ich über diese gehen, ohne ‚Ping‘?

War es hilfreich?

Lösung

Wenn ping es nicht tun, können Sie es nicht tun, in einer anderen Sprache. Hier ist eine Analogie, die Sie kann helfen, zu verstehen, warum. Lassen Sie uns sagen, dass es eine Datei auf dem Dateisystem ist, und Sie möchten ihren Inhalt handeln. Sie führen cat filename und es sagt cat: filename: Permission denied. Glauben Sie, Perl (oder eine andere Sprache) wird Messe besser als C hier getan hat? Lassen Sie uns versuchen:

#!/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>;

Wenn er gestartet wird gegen die Datei sagt, es could not open filename: Permission denied. Egal, welche Sprache Sie verwenden versuchen, werden Sie Operation not permitted erhalten.

Das heißt, es gibt auch andere Methoden zur Bestimmung, ob eine Maschine am Leben ist. Wenn ein Server ist, der immer bekannt ist, auf der Maschine läuft, könnten Sie versuchen, eine Verbindung herzustellen. Beachten Sie, dass die Verbindung nicht beenden müssen (z Login), sondern nur die Tatsache, dass Sie erfolgreich die Verbindung initiieren können, ist genug, dass das Feld zu wissen ist, nach oben.

Andere Tipps

ein Ping (ICMP) Dazu benötigen Sie Root-Zugriff.

Der einzige Weg, Sie haben, ist eine TCP oder UDP zu tun ping . Wenn Sie ein Beispiel möchten Sie den Code überprüfen Cacti oder können Sie hping für Sie tun es verwenden,

Sie können auch SUID-Bit gesetzt auf "ping" Programm auf Unix;)

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

Aber wenn Sie nicht eine Steckdose mit Ping öffnen kann, ist es unwahrscheinlich, dass Sie eines dieser verwenden können. Sprechen Sie mit Ihrem Hosting-Anbieter.

Das PHP Manual gibt Benutzer geliefert Code für eine Implementierung eines ping in PHP . Leider erfordert es Root-Zugriff, so dass es nicht wahrscheinlich ist, werden Sie in der Lage sein, dass entweder zu verwenden. Eine Alternative ist curl zu verwenden und sich die Werte wieder von curl_getinfo () :

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

Es ist nicht einmal annähernd gleichwertig ping, aber immer noch vielleicht geeignet für Ihre Bedürfnisse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top