この記事では学校などのproxy環境と家の非proxy環境でスマートに設定を切り替える方法を紹介する。
毎回bashrcなりzshrcなどに書かれたhttp_proxyをコメントアウトするのが面倒な人にはおすすめ出来る。
ちなみにMacではnetworksetupコマンドを用いて上手く切り替えることが出来る。
Macbookでproxy環境と非proxy環境のネットワーク設定をスマートに切り替えるメモ - Qiita
上記の記事も参考にしながらやってみる。
Ubuntu 18.04 LTSで実験。
使うコマンド
nmcligrepawk
install済みでない場合は適宜installを。
スクリプト
ShellScriptを用いてterminalを起動したときなどに自動で切り替わるようにする。
# !/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に以下を書いておく。
source ~/.switch_proxy