Corredor

ウェブ、プログラミングの勉強メモ。

色々な設定ファイルにプロキシ設定が含まれていないか確認するスクリプト

自分は、社内ネットワーク内で仕事をする時と、インターネットに直接繋いで作業する時とで、設定ファイルを使い分けている。.bashrc.gitconfig.npmrc などのファイルだ。

社内ネットワークで仕事する場合は、これらのファイルに社内ネットワーク向けのプロキシ設定を書き込んでいるのだが、インターネットに接続する際はこのプロキシ設定が残っていると、上手く接続できなくなる。

そんな環境なので、「今適用している .npmrc はプロキシ設定してある方だっけ?」と確認したい時や、「git push が上手く行かないが、プロキシ設定をし忘れているっけ?」といった時のために、簡単なシェルスクリプトを書いた。

#!/bin/bash

# プロキシ設定の有無を調べる

# Bash プロキシ設定
if ( env | grep -i proxy >& /dev/null ) ; then
  echo 'Bash : プロキシ設定アリ'
  # TODO : 環境変数がどのスクリプトファイルで設定されているのか調べる方法はないかのう
  env | grep -i proxy
else
  echo 'Bash : プロキシ設定ナシ'
fi

echo ''

# Git プロキシ設定
if ( git config --list --show-origin | grep proxy >& /dev/null ) ; then
  echo 'Git (.gitconfig) : プロキシ設定アリ'
  git config --list --show-origin | grep proxy
else
  echo 'Git (.gitconfig) : プロキシ設定ナシ'
fi

echo ''

# npm プロキシ設定
if ( npm config list | grep proxy >& /dev/null ) ; then
  echo 'npm (.npmrc) : プロキシ設定アリ'
  # ファイルの場所が分からないので「;」から始まるコメント行も出力する。ただし最終4行のコメントは要らないので sed で範囲指定して削除する
  npm config list | grep -E 'proxy|;' | sed -e '/node bin location/,/show all defaults/d'
else
  echo 'npm (.npmrc) : プロキシ設定ナシ'
fi

if ( 【コマンド】 >& /dev/null ) という構文が良い。実行したコマンドの終了コードが 0 なら true となる。

そこで、Git や npm のそれぞれのコマンドで環境設定を出力し、その中から proxy という単語を grep、その終了コードが 0 なら grep に該当する文言があったということで、「プロキシ設定アリ」と判断できるワケだ。grep は1つも引っかからないと終了コードが 1 になるので、プロキシ設定がない場合は else 側で拾うことになる。

もう少し共通化できそう感があるが、ひとまずこんなスクリプトを作っておけば、プロキシ設定の有無ぐらいはすぐに調べられそう。

難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版)

難読化シェル芸の世界 ~Bashとすてきな難読化~ (プレミアムブックス版)