PCをリモート起動するためにWOL導入
Wake On LAN とは、ネットワーク経由でパソコンの電源をオンにする機能のことです。よく、WOLと省略されます。
Wake on LANについては、パソコンのBIOS やWindowsの設定が必要で、Wake on LANに対応したパソコンやマザーボードが必要となります。
他のパソコンからの起動を命じる信号(Magic Packet)を、LAN経由で接続されたWake On LANに対応したネットワークアダプタを装着しているパソコンが受信するとこのMagic Packetを受信したほうのパソコンの電源がオンとなります。
Raspberry PiよりMagic Packetを送信するために「etherwake」をインストール
以下のコマンドで「etherwake」をインストール
$ sudo apt-get update $ sudo apt-get install etherwake $ which etherwake /usr/sbin/etherwake
以下、インストール時のコンソールです。
@raspberrypi:~ $ apt-cache search wake on lan between - game about consciousness and isolation crossroads - open source load balance and fail over utility for TCP based services desktop-autoloader - Accelerate Diskless Workstation systems by pre-loading a dummy Desktop Session etherwake - tool to send magic Wake-on-LAN packets fusioninventory-for-glpi - FusionInventory Server embedded as a plugin into GLPI golang-github-danwakefield-fnmatch-dev - Updated clone of kballard’s fnmatch(3) implementation for Go gwakeonlan - wakes up your machines using Wake on LAN shutdown-at-night - System to shut down clients at night, and wake them in the morning wakeonlan - Sends 'magic packets' to wake-on-LAN enabled ethernet adapters @raspberrypi:~ $ sudo apt-get update @raspberrypi:~ $ sudo apt-get install etherwake パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: wakeonlan 以下のパッケージが新たにインストールされます: etherwake wakeonlan アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 19 個。 19.6 kB のアーカイブを取得する必要があります。 この操作後に追加で 42.0 kB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf etherwake armhf 1.09-4 [9,112 B] 取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf wakeonlan all 0.41-12 [10.5 kB] 19.6 kB を 2秒 で取得しました (12.4 kB/s) 以前に未選択のパッケージ etherwake を選択しています。 (データベースを読み込んでいます ... 現在 145425 個のファイルとディレクトリがインストールされています。) .../etherwake_1.09-4_armhf.deb を展開する準備をしています ... etherwake (1.09-4) を展開しています... 以前に未選択のパッケージ wakeonlan を選択しています。 .../wakeonlan_0.41-12_all.deb を展開する準備をしています ... wakeonlan (0.41-12) を展開しています... wakeonlan (0.41-12) を設定しています ... etherwake (1.09-4) を設定しています ... man-db (2.8.5-2) のトリガを処理しています ... @raspberrypi:~ $ which etherwake /usr/sbin/etherwake @raspberrypi:~ $ etherwake -u usage: etherwake [-i <ifname>] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55
PHPよりetherwakeコマンドを実行
参考URL:GoogleHome で PCを起動( IFTTT / Webhook / Wake-on-LAN)
PHPを実行するapacheユーザーからsudoパスワード無しに、etherwakeが実行可能となりように設定します。
$ sudo visudo apache ALL=(ALL) NOPASSWD: /usr/sbin/etherwake www-data ALL=(root) NOPASSWD: ALL
以下が、「etherwake」を実行する際のPHPソースコードとなります。
関数として準備し、引数でLANカードのMACアドレスを引数で渡すようにしております。
function powerOn($MAC) { $cmd = 'sudo /usr/sbin/etherwake '.$MAC; $output = shell_exec($cmd); } //powerOn実行 powerON("xx:xx:xx:xx:xx:xx");