プロキシ設定が必要な学内 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 とします。