💭

Gitのプロキシ設定を自動的に切り替える方法

2024/04/04に公開

リモートワークの際に、ネットワーク環境が社外⇔社内と交互に切り替えることがあります。

その際に、Gitのグローバル設定で手動でプロキシを追加したり、外したりする必要があります。

作業自体は簡単ですが、さすがに毎回行うのは面倒くさいので自動化する方法を作成しました。

前提条件

  • OS環境:Windows10~11

Git proxy切り替えスクリプト作成

まずは社内or社外環境を判定し、Git設定を変更するBATスクリプトを作成します。

@echo off
setlocal

:: proxy server に ping を送る
ping -n 1 -w 500 proxy_server >nul

:: ping 結果でgit proxy ON or OFF を設定する
if errorlevel 1 (
    echo Unset global proxy
    git config --global http.proxy ""
) else (
    echo Set global proxy
    git config --global http.proxy http://user:password@proxy_server:port
)

スクリプトのタスク化

つぎに、Windowsのタスクスケジューラーを使用して、作成したBATファイルを5分ごとに実行するように設定します。

  1. 「スタート」メニューを開き、「タスクスケジューラー」を検索して開きます。
  2. 「アクション」メニューから「新しいタスクの作成」を選択します。
  3. 「名前」フィールドにタスクの名前を入力し、「説明」フィールドにタスクの説明を入力します(オプション)。次に、「次へ」をクリックします。
  4. 「トリガー」画面で、「毎日」を選択し、「次へ」をクリックします。
  5. 「毎日」画面で、「繰り返し間隔」フィールドに「5分」に設定し、「継続期間」を無制限にし、「次へ」をクリックします。
  6. 「アクション」画面で、「プログラムの開始」を選択し、「次へ」をクリックします。
  7. 「プログラムの開始」画面で、「プログラム/スクリプト」フィールドにBATファイルのフルパスを入力します。次に、「次へ」をクリックします。
  8. 「完了」画面で設定を確認し、「完了」をクリックします。

追記

定期的に実行されるため、バッチのコンソールウィンドウが表示されてしまい、作業の気が散ります。
対策としてVBSを用いてバックグラウンド実行するようにします。

以下のVBScriptを作成して、タスクスケジューラーの引数にBATファイルを指定することで、コンソール画面が前面に現れることを回避できます。

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c " & Wscript.Arguments(0), vbhide

まとめ

たかが1~2分の簡単な作業でも塵積って山となることもあるので、自動化が可能ならどんどん自動化をしてしまおう。

Written-By-Human-Not-By-AI-Badge-white

Discussion