コンテンツへスキップ

PHPからPING(生死監視)

電源状態確認(PING実行)

システム起動前に各機器の電源状況を確認します。
PING以外も考えられましたが、やはり枯れている定石なやり方が一番でした。
ちなみに、システム稼働後の電源OFF時にも電源状態確認後に、電源OFFを実施しています。

対象機器は、TVとWindowsのメインPCとなります。

PHPによるPING実行

以下ソースコードです。
PHPコマンドオプション「-c」「-n」の繰り返し回数指定がOSにより異なるので、実行環境に合ったコマンドオプションに変更。

define("WINDOWS_MAC","xx:xx:xx:xx:xx:xx");
define('PING_OPTION', [
    'Linux' => '-c',    // linux
    'Darwin' => '-c',   // macOS
    'WINNT' => '-n',    // windows
]);

function ping($host, $count = 1){
    $option = PING_OPTION[PHP_OS];
    exec("ping {$option} {$count} {$host}", $output, $result);

    if ($result) {
        echo 'ping 失敗', PHP_EOL;
        echo implode(PHP_EOL, $output);
    } else {
        echo 'ping 成功', PHP_EOL;
	}
    return $result;
}

function WakeupPC($MAC) {
	logger("Start powerOn","INFO");
	$cmd = 'sudo /usr/sbin/etherwake '.$MAC;
	$output =  shell_exec($cmd);
}

if(ping(WINDOWS_IP)){  //Windows OFF
	//WINDOWS power on
	WakeupPC(WINDOWS_MAC);
	sleep(60);
}else{ //Windows ON
	//電源ON時の処理 
}

参考にさせて頂いたサイト

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA