うちぱらめも

I will be back...(デデンデンデデン)

WSLでproxy環境と非proxy環境の切り替えをいい感じに切り替える

WSL、使っていますか?

僕は稀に使っています。
proxy環境下にいるときに、terminalでhttp_proxyを切り替えるのってめんどくさいですよね。

なのでここではWSL環境でhttp_proxyなどをいい感じに切り替える方法を紹介します。

qiita.com

この記事のWSL版です。

スクリプト

上の記事ではSSIDを取得する際に、 nmcli を使っていたためWSLでは動かすことができませんでした。
なので、SSIDを取得するためにWindowsnetsh というものを叩いて取得することにしました。

#!/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 `netsh.exe wlan show interfaces | awk '$1~/SSID/{print $3}' | awk 'NR==1'`
}

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

この記事と違うところは get_ssid の中の部分です。 もともと grep してそれを awk しようと思っていたのになぜかpermissionで怒られるのでこれに落ち着きました...

さいご

WSL2楽しみですね。
awkが2つに分かれてしまったのがつらいので、シェル芸に強い人がいたらまとめる方法教えてくれると嬉しいです。