【QNAP】QNAPで他のPCをWakeOnLan出来るようにする その2【PHP】

それでは実際に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

 

 参考:QNAPのパッケージマネージャ – Qiita

 

管理画面の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で通らない時は、

慌てず騒がず パスやユーザー権限の問題がないかを確認。 

 

「【QNAP】QNAPで他のPCをWakeOnLan出来るようにする その2【PHP】」への3件のフィードバック

  1. 大変助かりました!
    スケジュールを追加するとさらに便利です。
    vi /etc/config/crontab
    で自動タスクリストを開いてこちらの行を追加する:
    15 7 * * * /opt/bin/wakeonlan [macアドレスを入力]
    ↑毎日07:15
    最後にcronを再起動:
    crontab /etc/config/crontab
    /etc/init.d/crond.sh restart

コメントを残す

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