🌐

学内無線LANのプロキシ設定/解除を自動化させたい

2020/12/10に公開

概要

私の通っている学校では、学内の無線LANを使用する際に各種プロキシの設定をする必要があります(特にgitapt)。今まではgitaptの設定をaliasに書いて毎回学校でset、家ではunsetといちいちコマンドを叩いていたのですが、面倒なので自動化させてみることにしました。

環境

Ubuntu 20.04.1 LTS

やったこと

こんな感じで書きました。シェルスクリプトはほとんど書いたことないので、色々勉強になりました。

proxy_set.sh
#!/bin/bash
HTTP_PROXY="http://hoge.jp"
HTTPS_PROXY="https://hoge.jp"
wireless_network_interface_name="wlan0"
SSID="huge"

NAME=`iwconfig ${wireless_network_interface_name} | grep ESSID`

if [ `echo ${NAME##*ESSID:} | grep ${SSID}` ];then
    export http_proxy=${HTTP_PROXY}
    export https_proxy=${HTTPS_PROXY}
    git config --global http.proxy ${http_proxy}
    git config --global https.proxy ${https_proxy}
    alias apt='apt -o Acquire::http::proxy="${http_proxy}"'
else
    unset http_proxy
    unset https_proxy
    git config --global --unset http.proxy
    git config --global --unset https.proxy
fi

HTTP_PROXYTTPS_PROXYにはそれぞれプロキシサーバを記述、wireless_network_interface_nameには無線LANインターフェース名を記述、SSIDにはプロキシ設定を行う際に接続するSSIDを記述します。

iwconfig ${wireless_network_interface_name} | grep ESSIDでは現在接続している無線LANのSSIDを取得して、特定のSSID(私なら学校)ならプロキシ設定、それ以外なら解除しています。

自動化

あまり良い方法が思いつきませんでした...

とりあえず現段階では~/.bashrc

source 任意の場所/auto-proxy-setter/proxy_set.sh

を記述してシェルの起動時に設定or解除をしています。

終わりに

これ置いてあるリポジトリです↓

https://github.com/yuina-blend/auto-proxy-setter

Discussion