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

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

関連記事

【Ubuntu】【上級者向け】Grubブートローダを削除する

「デュアルブートしてたけどUbuntuを削除することにした。」という人などに向けて、Grubブートローダ(Ubuntuのブートローダ)を削除する方法を説明します。

【Ubuntu】【上級者向け】Grubブートローダをインストールする

「EFIシステムパーティションを新たに作成した」などの理由でGrubブートローダをインストールしたい人に向けてその方法を説明します。

ESP8266 で Tp-Link のスマートプラグ『Tapo P105』を直接操作する

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

ESP8266 で RSA PKCS#1 V1.5 暗号の復号

ESP8266 で RSA 暗号化の方式の一つである RSA PKCS#1 V1.5 、別名 RSAES-PKCS1-v1_5 の暗号を復号する方法です。

Raspberry Pi と AWS IoT を連携させて Alexa で LED や スマートプラグを操作する【Alexa×Raspberry Pi その1】

AWS IoT Core と Raspberry Pi を連携させて、Alexa を搭載した Amazon Echo 等を使って Raspberry Pi につないだ LED を制御します。ついでに、Tp-Link のスマートプラグ『Tapo P105』も操作させてみます。