LoginSignup
4
2

More than 5 years have passed since last update.

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

Posted at

この記事では学校などの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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2