gitのプロキシ設定を自動的に切り替える
プロキシ.不便ですよね. githubはhttpsで通信できるので,プロキシも超えられるのですが,プロキシ外からアクセスするとき,毎回,gitconfigのプロキシ設定を書き換える必要が有るわけです. セキュリティの問題上,ネットワークを切り替えて作業することはあまりないのですが,それだけに,なぜ「gitが動かない!!!!」とハマことがあります. そこで,環境に応じて,gitconfigのプロキシを自動的に切り替えるスクリプトを作ってみますた.
- 引数にサーバのアドレスとポートを渡します.
- すると,サーバにpingを打って,導通確認をします.
- 導通確認が取れると,そのサーバをgitコマンドを使ってプロキシに設定し,取れない場合は,プロキシサーバの設定を空にするというものです.
ソースはこんな感じ.pingのタイムアウトとかは,状況に合わせて変えた方がいいでしょうね.
#!/bin/bash
/sbin/ping -c 1 -W 500 $1 >> /dev/null
if test $? -eq 0; then
echo "Set global http.proxy=http://$1:$2"
git config --global http.proxy "http://$1:$2"
else
echo 'Unset global http.proxy'
git config --global http.proxy ''
fi
そして,このスクリプトをlaunchdで定期実行するようにします.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.sonson.gitconfig.proxy.plist</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/auto.gitconfig.proxy/update.sh</string>
<string>your proxy</string>
<string>your port</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>30</integer>
</dict>
</plist>
ProgramArgumentsのところの値を自分のプロキシ環境に変えればいいでしょう. 複数のプロキシをつなぎかえる場合は,引数を増やして,スクリプトで確認するサーバを配列にすればよいと思われる.