LoginSignup
0
1

More than 1 year has passed since last update.

WakeOnLanをWANとLANで同一アドレスから送信できるようにする

Last updated at Posted at 2022-08-17

はじめに

Flaskを用いてPCをWakeOnLanで起動するまでの手順をまとめます。

WakeOnLanとは

マジックパケットと呼ばれるデータをネットワークに繋がっているPCに送信することでPCを起動させる仕組み。

やりたい事

WakeOnLanを用いてパソコンにマジックパケットを送る際、LAN内からとWANから送るのにそれぞれプライベートIP、グローバルIPを指定する必要があり、面倒くさいのでFlaskでマジックパケットを送る用のサーバーを作りそこにリクエストを送ることでPCが起動するようにする。

だいたいこんな流れのことをやりたい。
a.png

1.パソコンの設定をする

こちらが分かりやすかったので参考にさせていただきました。

2.ルーターの設定をする

ルーターの設定ページのから、UDP:9、ブロードキャストアドレスでポート開放をしてください


image.png

3.Flaskサーバーを作る

flaskのバージョンは最新で作りました。
また、マジックパケットはこちらのライブラリを使用して送信しました
https://pypi.org/project/wakeonlan/

app.py
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を作成します

Procfile
web: gunicorn app:app

gunicornというのはheroku上でflaskを使うのに必要なライブラリーらしいです。

requirements.txt
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/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1