1

私はPHPでこれをやろうとしています。指定したホストが「稼働」しているかどうかを確認する必要があります

指定されたホストにpingを実行することを考えました(ただし、ルートが必要になるため、どうすればよいかわかりません。 --help here?)

またfsockopen()、指定されたポートに接続しようとすることも考えましたが、ホストがそのポートで接続をリッスンしていない場合、それも失敗します。

さらに、一部のホストは ping 要求をブロックしますが、これを回避するにはどうすればよいですか? ただし、この部分は必須ではないので、あまり心配する必要はありません。私はこれがトリッキーになるかもしれないことを理解しています.

4

5 に答える 5

5

私は通常、公開ページに対して単純な cURL を実行し、200 が返されるかどうかを確認します。500、404、または 200 以外の応答が返された場合は、何か怪しいことが起きていることがわかります。

于 2011-01-13T22:49:11.903 に答える
4

簡単に言えば、これを行うための優れた普遍的な方法はないということです。Pingは可能な限り近いものです(ほとんどすべてのホストがそれに応答します)が、観察したように、PHPでは通常、低ポートを使用するためにルートアクセスが必要です.

ホストでシステム コールの実行が許可されているため、OS レベルで ping コマンドを実行して結果を解析できますか? これはおそらくあなたの最善の策です。

$result = exec("ping -c 2 google.com");

ホストが ping 要求をブロックしている場合は、より一般的なポートスキャンを実行して他の開いているポートを探すことができます (ただし、これは非常に失礼です。特定の許可を与えていないホストに対しては実行しないでください)。Nmapは、これを行うための優れたツールです。ホストが稼働しているかどうか、およびどのサービスが実行されているかどうかを判断するために、かなりの数のトリックが使用されます。ただし、一部の共有ホスティング プロバイダーは、Nmap をインストールして使用する場合、特に管理していないホストやプローブする権限を持っていないホストに対して、「ハッキング アクティビティ」を理由にアカウントを終了するので注意してください。

さらに、別のホストと同じ非スイッチ イーサネット層にいる場合 (たとえば、たまたま同じオープン WiFi ネットワークにいる場合)、プロミスキャス モードのイーサネット アダプターは、ホストとの間のトラフィックを傍受できます。あなたに直接返信しないでください。

于 2011-01-13T22:49:03.617 に答える
1

cURLを使用できます

$url = 'yoururl';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode) {
    // All's well
} else {
    // not so much
}
于 2011-01-13T23:07:42.680 に答える
0

ホストを監視するには、少なくとも 1 つのポートが開いている必要があります。ホストは Web サーバーですか? その場合、ポート 80 への接続を開くことができます。接続が正常に開かれている限り、少なくともホストの一部が機能しています。

より良い解決策は、モニターだけが Web アクセスできるスクリプトを用意することです。その後、そのスクリプトへの接続を開くことができ、そのスクリプトはさまざまなシステム情報を返します。

編集 -

このテストをどの程度徹底的に行いたいですか? [サーバー上] -> [Apache 実行中] -> [Web アプリケーションの動作中] すべて異なるレベルの動作です。apache が何かを返していることを示すだけで、少なくともサーバーがオンになっていることは示されますが、Web アプリが実行されていることは示されません。(このようなものを実行していない可能性があることは承知していますが、有用な例であることを願っています)

編集 -

監視のためだけに軽量の http サーバー (つまり、非常に軽量) をインストールする価値はありますか?

それに失敗した場合、頻繁にホームに電話をかけ、稼働していることを示すホストに何かをインストールできますか?

于 2011-01-13T22:51:00.280 に答える