5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SSIDとパスワードを生成し、QRコードにして Slack にぶん投げる。

Last updated at Posted at 2020-01-01

ゲスト用無線 LAN の SSID とパスワードの更新作業を自動化したい

ゲスト用無線 LAN 設定の更新作業が面倒なため、この作業を自動化しようと思います。

できること

  • スクリプトを実行すると Slack へ 無線 LAN の設定情報が載った QR コードが発行される
  • slack に発行された QR コードを iPhone や Android 端末で読み取ると無線 LAN の接続を提案する

画像で言うなら、これができるようにします。
写真 2020-01-01 17 49 24.png

仕組みの概要

  1. SSIDとパスワードを生成する
  2. 生成された情報をQRコードの画像にする
  3. SSIDとパスワードの情報を画像にする
  4. 上記の内容を Slack にぶん投げる

環境

  • CentOS Linux release 7.7.1908 (Core)
  • Python 3.6.8

実装

Github に書いたコードを参照ください

使ってみる

Slack の設定(Tokenが取得できればOK)

  1. slack で app を選択し bot を追加する
    スクリーンショット 2020-01-01 13.56.34.png
    スクリーンショット 2020-01-01 13.56.57.png

  2. bot に名前を設定する
    スクリーンショット 2020-01-01 13.58.41.png

  3. bot に対する Token を取得する(このトークンは後で設定します)
    スクリーンショット 2020-01-01 13.58.58.png

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 コードの投下と確認

  1. python3 rice_cooker.py で実行する
    スクリーンショット 2020-01-01 15.21.59.png

  2. slack で QR コード、SSID、パスワードを確認する
    スクリーンショット 2020-01-01 15.22.15.png

iOS から Wi-Fi 接続

  1. iPhone を立ち上げて、 QR コードを読み取る
写真 2020-01-01 17 44 50.png
  1. ネットワークに接続することを促されるので、接続をタップする
写真 2020-01-01 17 49 24.png
  1. 無線 LAN に接続されていることを確認する
写真 2020-01-01 16 08 08.png

無事、接続されました!

ネットワーク設定自動化について

本来は、この処理の後に、 SSH で AP に接続し、無線 LAN の設定(SSID,Password)を追加および削除するコードが入っていました。
Ansible か Netmiko で実装しようかと思いましたが、使っていた無線 LAN の端末が Aruba製品 で、それらが使えず Python の expect で対応しました。
モチベーションが残っていれば expect でのネットワーク設定自動化についても書いていこうかと思います。

ハマる点

  • Pillow の Image.width は正しく処理されないことがあり、 Image.size[0] に処理を入れ替えてお茶を濁しました。

参考

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?