プロキシ環境変数を対話的に設定するエイリアス&関数
多くのコマンドでは http_proxy 環境変数を設定することでHTTPプロキシを使えます。
export http_proxy='http://proxy.example.com:8080'
認証付きプロキシを使う場合は URI にユーザ名とパスワードを含めます。
export http_proxy='http://user:passwd@proxy.example.com:8080'
上記の方法では、
- 画面にパスワードが表示されてしまう
- 履歴にパスワードが残る
といった問題があります。
そこで、readコマンドで入力プロンプトを表示します。readコマンドは -s オプションを渡すことで、入力文字をエコーバックしないようにできます。
alias setproxy='echo -n "Password: " && read -s pw && export http_proxy="http://${pw}@proxy.example.com:8080"'
これでパスワードが表示されなくなりました。
# setproxy Password: ←パスワードを入力 # yum update
とりあえず .bashrc にエイリアスを書いておくと便利ですが、他のユーザも使いたいかもしれません。運用が楽になりますし。
そこで、ちゃんとした関数を書きました。
# /etc/profile.d/setproxy.sh function setproxy () { proxy_uri='proxy.example.com:8080' echo "Proxy URI: ${proxy_uri}" echo -n 'Proxy user: ' read -s proxy_id echo echo -n 'Proxy password: ' read -s proxy_pw echo export http_proxy="http://${proxy_id}:${proxy_pw}@${proxy_uri}" echo 'Examining connection...' curl -I http://www.example.com/ }
上記のファイルを /etc/profile.d/setproxy.sh に置いておくと、
- setproxy コマンドを実行するだけで、誰でも http_proxy 環境変数を設定できる。
- ユーザ名やパスワードは画面に表示されないし、履歴に残らない。
- 接続を試行するので、プロキシ認証に失敗した場合は分かる。
というメリットがあります。
こんな感じで使います。
# setproxy Proxy user: ←ユーザ名を入力 Proxy password: ←パスワードを入力 Examining connection... HTTP/1.0 302 Found Location: http://www.iana.org/domains/example/ Server: BigIP Connection: Keep-Alive Content-Length: 0 # yum update
運用ツールの一つにどうぞ。
ここにも置いてます。
https://gist.github.com/2873395