電源状態確認(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時の処理 }
参考にさせて頂いたサイト