Linux
proxy
Linuxコマンド

Linuxでproxy環境と非proxy環境のネットワーク設定をスマートに切り替える(terminal)

この記事では学校などの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を立ち上げたときに自動で切り替わるようにするには,bashrczshrcに以下を書いておく。

.bashrc
source ~/.switch_proxy

参考

Macbookでproxy環境と非proxy環境のネットワーク設定をスマートに切り替えるメモ - Qiita