カフェとか勉強会会場とかのWiFi等のWeb認証で毎回ブラウザでID・パスワードの入力とかAcceptボタンのクリックとかが面倒なので自動化しようというお話です。古いネタなんですが、周りに割と知らない人がいたのと、ググるとツールを使う方法とかが出てきちゃったのでスクリプトのみで行う方法を一応書いておこうと思います。
NetworkManagerの有無によって変わります。
NetworkManager有りの場合
以下のようなファイルを作成します。
#!/bin/bash
if [ "$CONNECTION_ID" = "example-wifi" ]; then
curl http://example.com/login -d user=example-user -d password=example-password -d cmd=authenticate
fi
CONNECTION_ID
はwifiのSSIDを入れます。
curlのURLとパラメータはWeb認証で必要となるものに置き換えて貰えればと思います。
これらは事前に一度はログインしてパケットをキャプチャするなどして調べておく必要があります。
例えばdocomo WiFiならcurl https://wlan.m-zone.jp/wlan/portal.jsp -d user=username-spmode@docomo -d password=userpassword -d mode=activate
とかですね。
そして実行権限を付与すればOKです。
sudo chmod +x !$
これで接続時に自動的に上記のスクリプトが実行されて繋がります。
NetworkManager無しの場合
/etc/sysconfig/network-scripts/ifup-post
から
/sbin/ifup-local
が呼ばれるので、そこに処理を書きます。
デフォルトだとファイルが存在しないので、ファイル作成後に実行権限を付与します。
こっちは数年前に試したきりです。
現在手元にはNetworkManagerがオンのマシンしかないので、実は動かないとかあったらコメントください。
以上。超小ネタでした。