やりたいこと
Mac OS において、複数のネットワークのプロキシ設定を一括で設定する。
動機
フリーアドレスで、かつ各座席で有線接続をする場合(モニタにLANが来て、type-cやThunderboltでつなぐときなど)、有線のネットワーク設定が各座席ごとに生成されるが、プロキシ設定をネットワーク設定(座席)ごとにそれぞれ設定する必要があり、非常に手間だったため。
実際のコード
networksetup
というコマンドがあるので、これを使う。
補足1. on,offそれぞれのコードを.sh
で保存して利用することを想定してコードを書いています。
補足2. 加筆すればGUIで設定できるすべてのネットワーク設定に対応できるはずです。
proxy設定をonする
IFS=$'\n'
networks=`networksetup -listallnetworkservices`
proxy='xxx' # proxyのドメイン名を入れる
port=11111 # proxyのポート番号を入れる
apc='http://hogehoge' # proxyの構成ファイルのURLを入れる
echo "params: proxy: $proxy:$port, auto_proxy_url: $apc"
for svc in $networks; do
info=`networksetup -getinfo $svc`
if [ "`echo $info | grep '** Error: The parameters were not valid'`" ]; then
continue
elif [ "`echo $svc | grep 'Wi-Fi'`" ]; then
continue
fi
# 自動プロキシ検出
networksetup -setproxyautodiscovery $svc on
# 自動プロキシ構成
networksetup -setautoproxyurl $svc $apc
# Webプロキシ(HTTP)
networksetup -setwebproxy $svc $proxy $port
# 保護されたWebプロキシ(HTTP)
networksetup -setsecurewebproxy $svc $proxy $port
# FTPプロキシ
networksetup -setftpproxy $svc $proxy $port
# 確認
echo "on proxy setting $svc"
done
proxy設定をoffする
IFS=$'\n'
networks=`networksetup -listallnetworkservices`
for svc in $networks; do
info=`networksetup -getinfo $svc`
if [ "`echo $info | grep '** Error: The parameters were not valid'`" ]; then
continue
elif [ "`echo $svc | grep 'Wi-Fi'`" ]; then
continue
fi
# 自動プロキシ検出
networksetup -setproxyautodiscovery $svc off
# 自動プロキシ構成 -> offはないので空文字に変換
networksetup -setautoproxystate $svc off
# Webプロキシ(HTTP)
networksetup -setwebproxystate $svc off
# 保護されたWebプロキシ(HTTP)
networksetup -setsecurewebproxystate $svc off
# FTPプロキシ
networksetup -setftpproxystate $svc off
# 確認
echo "off proxy setting $svc"
done
参考文献など