smnhooi’s blog

下手な殴り書きをひたすら書いていきます。文章がお見苦しかったらすみません。

NASのWOLを有効にする。

先日、NASを構築しましたが、これは常にONしておくつもりはありません。どうせ頻繁にアクセスするわけじゃないし、電気代がかかるからです。
しかし、使用するたびに電源を押したり、SSHにログインしてシャットダウンするのは面倒で、そのままだといずれ使わなくなってしまいます。
そこで、ワンクリックでシャットダウンできるところまで簡単にON/OFFできるようにします。


まずはNAS側の環境から。

NASは以下を行いました。

  1. WOLを有効にする。
  2. パスなしでpoweroffできるようにする。


まずはWOLを有効にします。
こちらの記事を全面的に参考にさせていただきました。
Ubuntu 20.04 で Wake-On-LAN を有効化する。

ethtoolsというものをインストールするそうです。

sudo ethtools [eth_name]

これでwake-onがgと表示されていればいいのですが、僕の環境ではやっぱり表示されていませんでした。

WOL有効化は毎回の起動時にコマンドを打たないといけないのですが、
はじめはinit.dで起動時のスクリプトを実行しようとしましたがうまくいかず、やむなくsystemDで実行することにしました。

sudo mkdir /etc/wol

次に中に起動用のスクリプトを書きます。
eth_nameの部分はifconfigを打つと出てきます。

#!/bin/sh
/sbin/ethtool -s [eth_name] wol g

作成したスクリプトに実行権限をつけます。

次にサービス定義ファイルを/etc/systemd/system/wol.serviceとして作成します。

[Unit]
Description=WOL

[Service]
Type=simple
ExecStart=/etc/wol/wol.sh
Restart=always

[Install]
WantedBy=multi-user.target

これでserviceを有効化すれば起動時に実行されます。

sudo systemctl enable wol.service

次にsudo poweroffです。

/etc/sudoersに以下を書き込みます。

#poweroff
user_name ALL=NOPASSWD: /sbin/poweroff

これで

sudo poweroff

としてもパスワードを聞かれずに実行することができます。
ちなみにsudoersの中身を間違えるとsudoできなくなってしまいます。visudoを使うのが正攻法らしいのですが、僕はsuでルートに入って編集するようにしました。