この記事では学校などのproxy
環境と家の非proxy
環境でスマートに設定を切り替える方法を紹介する。
毎回bashrc
なりzshrc
などに書かれたhttp_proxy
をコメントアウトするのが面倒な人にはおすすめ出来る。
ちなみにMacではnetworksetup
コマンドを用いて上手く切り替えることが出来る。
Macbookでproxy環境と非proxy環境のネットワーク設定をスマートに切り替えるメモ - Qiita
上記の記事も参考にしながらやってみる。
Ubuntu 18.04 LTSで実験。
使うコマンド
nmcli
grep
awk
install済みでない場合は適宜installを。
スクリプト
ShellScriptを用いてterminalを起動したときなどに自動で切り替わるようにする。
.switch_proxy
#!/bin/sh
proxy=環境にあわせたproxy_address
switch_tori=proxy環境下のssid
function set_proxy() {
export http_proxy=$proxy
export https_proxy=$proxy
export ftp_proxy=$proxy
export all_proxy=$proxy
git config --global http.proxy $proxy
git config --global https.proxy $proxy
git config --global url."https://".insteadOf git://
}
function unset_proxy() {
unset http_proxy
unset https_proxy
unset ftp_proxy
unset all_proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset url."https://".insteadOf
}
function get_ssid() {
echo `nmcli dev status | grep '接続済み' | awk '{print $4}'`
}
echo `get_ssid`
if [ "`get_ssid`" = "$switch_tori" ]; then
echo -e "\e[31mSwitch to proxy for school network\e[m"
set_proxy
else
echo -e "\e[36mUnset proxy settings\e[m"
unset_proxy
fi
nmcli dev status
でネットワークデバイスを表示する。
grep '接続済み'
で接続済みのデバイス行を取得する。(日本語環境想定)
awk '{print $4}'
でSSIDを取得する。
これを.switch_proxy
として保存する。(ここではホームディレクトリに保存)
terminalを立ち上げたときに自動で切り替わるようにするには,bashrc
やzshrc
に以下を書いておく。
.bashrc
source ~/.switch_proxy