dd-wrtに依存しない、アクセス時にメディアサーバーを自動的に起動するソリューションが必要だと判断しました。
私はラズベリーpiを持っているので、それは低電力であり、いつでもそれを維持することを気にしないので、それを使用しました。もちろん、それは任意のLinuxマシンから実行できます。
私が見つけた最後の解決策は、小さなbashスクリプトを作成することでした。raspberry-piの依存関係は、etherwakeとtcpdumpです。どちらもデフォルトではrasbianにインストールされていません。また、他の投稿で述べられているように、サーバーでWake On Lanを有効にする必要があります。
sudo apt-get install etherwake
sudo apt-get install tcpdump
ウェイクスクリプトは次のとおりです。
nano ~/wol.sh
次に:
#!/bin/bash
pingInterval=60 #time interval, in seconds, between checks that the server is still awake.
target=192.168.x.x #WOL target ip address
targetMAC=00:11:22:33:44:55 #WOL target MAC
wake () {
tcpdump -i eth0 -c 1 -p host $target
etherwake $targetMAC
#echo WOL sent to $target at $targetMAC
return
}
while sleep $pingInterval; do
varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?`
if [ $varPing -eq 0 ]; then
#echo ping success
else
#echo ping fail
wake
fi
done
主なアイデアは、それが私のraspberry-piから実行され、サーバーに対する単一のarp要求に気づいた場合にサーバーをウェイクアップすることです。サーバーが起動している場合、サーバーはarpリクエストをリッスンしませんが、時々数回のpingを送信してから、サーバーがまだ起動していることを確認します。
ファイルにwol.shという名前を付け、実行可能にしました。次に、それをsudo crontabに入れて、ルートとして@rebootを起動します。これは、eth0とetherwakeをリッスンするために昇格したアクセスを必要とするtcpdump用です。
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
これを下に追加
@reboot sh /home/pi/wol.sh > /dev/null