茱萸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

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

関連記事

LPC11U35を汎用ARMデバッガとして使う

秋月で売っているLPC11U35を汎用ARMデバッガとして使いたいと思います。

STM32F042でAVRプログラマを作る

秋月で販売しているSTM32F042K6T6でAVRプログラマを作ります.

Tp-Link のスマートプラグ『Tapo P105』を PC・Raspberry Pi から直接操作する

Tp-Link のスマートプラグ『Tapo P105』をアプリや IFTTT といった外部サービスを用いずに、PC・Raspberry Pi から直接操作してみます。

Windows 10 で OpenSSH サーバーを使う

Windows 10 で OpenSSH サーバーを立ち上げて、外部から SSH ログインできるようにします。

【Ubuntu】NVIDIAドライバ・CUDA・CUDNNをインストールして深層学習環境を整える

Ubuntuで Nvidiaドライバ、CUDA、CUDNN をインストールし深層学習環境を整える方法を説明します。