茱萸note

電子工作の備忘録と旅行の記録

Web 電子工作

プロキシ設定が必要な学内LANに接続するときに役に立つスクリプト

投稿日:2020年3月13日 更新日:

プロキシ設定が必要な学内 or 社内LANに接続する際のプロキシ設定の切り替えをしやすくするスクリプトを用意します。


目次


Windows 10 の場合

Windows 10 の場合、バッチファイルを作成すると楽でしょう。

@powershell -NoProfile -ExecutionPolicy Unrestricted "$s=[scriptblock]::create((gc \"%~f0\"|?{$_.readcount -gt 1})-join\"`n\");&$s" %*&goto:eof

$proxy_host="http://www-proxy.univ.jp"
$proxy_port="8080"
$ignore_hosts="*.univ.ac.jp"

$reg_key="HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"

"[1] Enable univ proxy."
"[2] Disable univ proxy."
$key_input=Read-Host " "

if($key_input -eq "1"){
    Set-ItemProperty -path ${REG_KEY} ProxyEnable -value 1
    Set-ItemProperty -path ${REG_KEY} ProxyServer -value "${proxy_host}:${proxy_port}"
    Set-ItemProperty -path ${REG_KEY} ProxyOverride -value "${ignore_hosts};<local>"
}elseif($key_input -eq "2"){
    Set-ItemProperty -path ${REG_KEY} ProxyEnable -value 0
}


$source=@"
[DllImport("wininet.dll")]
public static extern bool InternetSetOption(int hInternet, int dwOption, int lpBuffer, int dwBufferLength);
"@
$wininet = Add-Type -memberDefinition ${source} -passthru -name InternetSettings
${wininet}::InternetSetOption([IntPtr]::Zero, 95, [IntPtr]::Zero, 0)|out-null
${wininet}::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0)|out-null

3行目の $proxy_host にはプロキシサーバーのURL を、4行目の $proxy_port にはプロキシサーバーのポート番号を指定します。5行目の $ignore_hosts に指定したURLへの通信はプロキシサーバーを経由しません。

proxy.bat という名前でバッチファイルを作成したとします。プロキシ設定を切り替えたい時は、エクスプローラー(デスクトップ画面に作成したならデスクトップ画面)で proxy.bat をダブルクリックして実行します。 1 をタイプして Enter キーを押すとプロキシが有効になり、 2 をタイプして Enter キーを押すとプロキシが無効になります。

Ubuntu 18.04 Desktop の場合

Bash スクリプトを用意して、source コマンドでスクリプトを読み込んであげると楽でしょう。

proxy_host="http://www-proxy.univ.jp"
proxy_port="8080"
ignore_hosts="'*.univ.ac.jp'"

read -p "[1] Enable univ proxy.
[2] Disable univ proxy.
 : " proxy_idx

case "$proxy_idx" in
    1)
        export http_proxy="$proxy_host:$proxy_port"
        export https_proxy="$proxy_host:$proxy_port"
        export HTTP_PROXY="$http_proxy"
        export HTTPS_PROXY="$https_proxy"
        gsettings set org.gnome.system.proxy mode "manual"
        gsettings set org.gnome.system.proxy.http host $proxy_host
        gsettings set org.gnome.system.proxy.http port $proxy_port
        gsettings set org.gnome.system.proxy.https host $proxy_host
        gsettings set org.gnome.system.proxy.https port $proxy_port
        gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', $ignore_hosts]"
        ;;

    2)
        export http_proxy=""
        export https_proxy=""
        export HTTP_PROXY=""
        export HTTPS_PROXY=""
        gsettings set org.gnome.system.proxy mode "none"
esac

proxy.bash という名前でシェルスクリプトを作成したとします。プロキシ設定を切り替えたい時は、ターミナル(端末)を開いて source proxy.bash を実行します。 1 をタイプして Enter キーを押すとプロキシが有効になり、 2 をタイプして Enter キーを押すとプロキシが無効になります。この作業はターミナル(端末)を開き直す度にやらないといけないかもしれません。

sudo コマンドを実行する時は、-E オプションを付ける必要があります。例えば、sudo apt update コマンドをプロキシ環境下で実行したい時は、sudo -E apt update とします。

-電子工作
-,


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

AVR32を使う

Atmel製のマイコン「AVR32」を使ってみた感想です。

【上級者向け】Ubuntuをデュアルブートする《その1:既にWindowsが入っているSSD・HDDにUbuntuを入れる》

既にWindowsがインストールされているSSD・HDDに追加でUbuntuをインストールする方法です。上級者向け。

【祝入学】WSLでC言語のお勉強を始める

WindowsでC言語をお勉強をしたい人におすすめの方法です。

【ふざけるな Anaconda】Windows で Python 環境を整える

Anaconda なんか使わずに Windows に Python をインストールします。

Alexa で ESP8266 を操作する方法【Alexa×Arduino 検討】

Alexa を搭載した Amazon Echo 等を使って ESP8266(Arduino)を操作する方法を検討します。