はじめに
Flaskを用いてPCをWakeOnLanで起動するまでの手順をまとめます。
WakeOnLanとは
マジックパケットと呼ばれるデータをネットワークに繋がっているPCに送信することでPCを起動させる仕組み。
やりたい事
WakeOnLanを用いてパソコンにマジックパケットを送る際、LAN内からとWANから送るのにそれぞれプライベートIP、グローバルIPを指定する必要があり、面倒くさいのでFlaskでマジックパケットを送る用のサーバーを作りそこにリクエストを送ることでPCが起動するようにする。
1.パソコンの設定をする
こちらが分かりやすかったので参考にさせていただきました。
2.ルーターの設定をする
ルーターの設定ページのから、UDP:9、ブロードキャストアドレスでポート開放をしてください
3.Flaskサーバーを作る
flaskのバージョンは最新で作りました。
また、マジックパケットはこちらのライブラリを使用して送信しました
https://pypi.org/project/wakeonlan/
from flask import Flask, request, Response
import wakeonlan
app = Flask(__name__)
@app.route('/send_magick', methods=['GET'])
def send_magick():
mac_address = request.args['mac_address']
ip_address = request.args['ip_address']
# broadcast_address = request.args.get('broadcast', '192.168.0.255')
port = request.args.get('port', default=9, type=int)
wakeonlan.send_magic_packet(
mac_address,
ip_address=ip_address,
port=port
)
return Response('', status=201)
@app.errorhandler(400)
def error_handler(error):
return 'Some parameter have not received', error.code
if __name__ == '__main__':
app.run(debug=True)
本当にシンプルなコードでできました。flask便利。
次に、herokuを用いてflaskサーバーを立ち上げます。
そのために、Procfileとrequirements.txtを作成します
web: gunicorn app:app
gunicornというのはheroku上でflaskを使うのに必要なライブラリーらしいです。
wakeonlan
Flask
gunicorn
そしたら、これらをGithubにアップロードしてherokuと連携させ、deployしました。
4.使ってみる
では、実際にパケットを送ってみます。
https://wakeonlan-web.herokuapp.com/send_magick?mac_address=XX:YY:ZZ:AA:BB:CC&ip_address=xxx.zzz.yyy
このようにMACアドレスと、IPアドレスを指定します(noip.comなどを使ってddnsを設定するのを推奨)
アクセスして、成功するとマジックパケットが送信され、PCが起動するはずです!
おまけ
今回僕が作ったflaskサーバーを公開しておきます。
webhookなどを使えばgoogle assistant等と簡単に連携できると思うのでぜひ使ってみてください
https://github.com/PenguinEino/wol-server
https://wakeonlan-web.herokuapp.com/