ゲスト用無線 LAN の SSID とパスワードの更新作業を自動化したい
ゲスト用無線 LAN 設定の更新作業が面倒なため、この作業を自動化しようと思います。
できること
- スクリプトを実行すると Slack へ 無線 LAN の設定情報が載った QR コードが発行される
- slack に発行された QR コードを iPhone や Android 端末で読み取ると無線 LAN の接続を提案する
仕組みの概要
- SSIDとパスワードを生成する
- 生成された情報をQRコードの画像にする
- SSIDとパスワードの情報を画像にする
- 上記の内容を Slack にぶん投げる
環境
- CentOS Linux release 7.7.1908 (Core)
- Python 3.6.8
実装
使ってみる
Slack の設定(Tokenが取得できればOK)
python のコードに設定
rice_cooker.py(8行目~13行目)
# Please Write Your Wi-Fi Setting & Slack Token & Font Path
CONPANY_NAME = 'GUEST'
ENCRYPTION_METHOD = 'WPA'
SLACK_TOKEN = ''
SLACK_CHANNEL = 'freewifi-dev'
FONT_PATH = '/usr/share/fonts/dejavu/DejaVuSans.ttf'
下記の項目を入力します。
- 設定項目
- CONPANY_NAME = 'SSID の先頭の文字列を入力します'
- ENCRYPTION_METHOD = '無線 LAN の暗号化方式を入力します'
- SLACK_TOKEN = 'QRコードを投下する Slack に投下するためのトークンを入力します'
- SLACK_CHANNEL = 'QRコードを投下する Slack のチャンネルを指定します'
- FONT_PATH = 'CentOS 上にあるフォントの位置を指定します'
Slack へ QR コードの投下と確認
iOS から Wi-Fi 接続
- iPhone を立ち上げて、 QR コードを読み取る
- ネットワークに接続することを促されるので、接続をタップする
- 無線 LAN に接続されていることを確認する
無事、接続されました!
ネットワーク設定自動化について
本来は、この処理の後に、 SSH で AP に接続し、無線 LAN の設定(SSID,Password)を追加および削除するコードが入っていました。
Ansible か Netmiko で実装しようかと思いましたが、使っていた無線 LAN の端末が Aruba製品 で、それらが使えず Python の expect で対応しました。
モチベーションが残っていれば expect でのネットワーク設定自動化についても書いていこうかと思います。
ハマる点
- Pillow の Image.width は正しく処理されないことがあり、 Image.size[0] に処理を入れ替えてお茶を濁しました。
参考
- パスワード作成の参考
- QR コードの発行
- 画像の生成、結合
- slack への通知機能