それでは実際にQNAPでWake on LAN出来るようにしてみます。
放置しすぎてアップタイムが1年半を回ろうとしていた
我が家のQNAPたん…
もくじ
QNAPから Wake on Lan出来るようにする
QNAPのWebサーバーのPHPを通して、
Wake on Lan出来るように設定していきます。
前提条件
ハードウェア:TS-251+ メモリは8GBx2に増設済
ソフトウェアバージョン:QTS 4.3.6
WebサーバーやSSHは既にオンにしている。
パッケージマネージャーをインストールする
QNAPは初期状態で
パッケージマネージャーがインストールされていないため、
自分でインストールする必要があります。
「〇〇 入れ方 linux」とかで調べても、
「apt-getでコレを入れて~」「yum~~」とかしか出てきません。
パッケージマネージャーがないから
そのやり方出来んぞ(#^ω^)
みたいな事になるので、まずはQPKGを入れておきます。
QPKGのダウンロード:Install on QNAP NAS · Entware/Entware-ng Wiki · GitHub
管理画面のAppCenterから、手動でアプリを追加します。
右上の+のアイコンをクリックして、ダウンロードした
“Entware-ng_0.97.qpkg” を指定します。
SSHでQNAPに接続して、 opkgと入力して実行結果が出ればOK!
コマンドラインのインストール
opkg update
最新のリストを取得します。
opkg list wakeon*
それっぽいパッケージがないか確認して
opkg install wakeonlan
wakeonlanをインストールします。
wakeonlan [mac_address]
まずは適当なパソコンを起こしてみましょう。
ここでうまくいくことを確認したら、次はPHPから呼び出すようにします。
PHPからwakeonlanを呼び出す
wakeonlanコマンドは、
/opt/binに配置されています。
SSH上で直接PHPを実行すると動作しますがが、
Webからアクセスすると動作しませんでした。
バイナリの場所を調べたりするうちに、
SSH上では上の場所にパスが通っているが、
Web上のPHPでは通っていないことが発覚!!
PHPでパスを通したうえで実行したら、
無事動作しました。
<pre><!--?php
$path = getenv('PATH').":/opt/bin:/opt/sbin";
putenv("PATH=$path");
exec("wakeonlan FF:FF:FF:FF:FF:FF",$output, $return_var);
var_dump($output);
echo "return:".$return_var;
?-->
</pre>
これで戻り値0が出力されていれば、正しく実行されています。
あとは煮るなり焼くなり組み込むなり。
自分はテキストファイルからMACアドレス一覧を読み込んで
どこからでも好きなように起動できるようにしています。
まとめ
QNAPをカスタマイズする第一歩として、
パッケージマネージャーは入れておけ。
SSHで通ってもWebで通らない時は、
慌てず騒がず パスやユーザー権限の問題がないかを確認。
大変助かりました!
スケジュールを追加するとさらに便利です。
vi /etc/config/crontab
で自動タスクリストを開いてこちらの行を追加する:
15 7 * * * /opt/bin/wakeonlan [macアドレスを入力]
↑毎日07:15
最後にcronを再起動:
crontab /etc/config/crontab
/etc/init.d/crond.sh restart