1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

hostsを変更するためのコマンド

Last updated at Posted at 2018-11-23

2018/12/15 : 使用中のhostsパターンを確認できるようなコードを追記

作った理由

Macでhostsを変更するたびに、vimで変更させるのだるい...って思ったので、コマンド作りました。

GitHub

コード

var=$1

#check
if [ -z $var ]; then
  exit
else
  case "$var" in
    #your host key
    "xxx" ) : ;;
    "chk" )
	if [ -d $HOME/hosts/.chk/ ]; then
		basename $HOME/hosts/.chk/*
		exit
	else
		:
	fi
	;;
    * ) exit ;;
  esac
fi

mm=`date +'%Y%m%d'`

cd $HOME
if [ -d "hosts" ]; then
  :
else
  #Initial activation
  #mkdir
  mkdir hosts
  cd hosts
  mkdir backup .chk "your directory"
  find . -name "hosts*" -type d -exec cp /etc/hosts {} \;
  echo "hosts update..."
  exit
fi

#backup
cp -f /etc/hosts $HOME/hosts/backup/hosts_bk_$mm

#check
if [ -d $HOME/hosts/.chk/ ]; then
 rm $HOME/hosts/.chk/*
fi
touch $HOME/hosts/.chk/$var

#main system
#change_hosts
case "$var" in
  "xxx" ) cp $HOME/hosts/"your directory"/"xxx" $HOME/hosts/"xxx"/hosts && sudo cp -f $HOME/hosts/"your directory"/hosts /etc/hosts && rm $HOME/hosts/"your directory"/hosts ;;
  #Add as you like
esac

exit

#処理の流れと使い方
コマンドの使用方法

change_hosts {key}

keyとは切り替えるための文字列になります。
下記の箇所でkey($var)を実行時にチェックしています。
正しくない場合は、処理を終了させています。
chkが入力された場合は、ディレクトリの存在チェックを行い、.chkにあるファイル名を表示させる。

#check
if [ -z $var ]; then
  exit
else
  case "$var" in
    #your host key
    "xxx" ) : ;;
    #hosts check!
    "chk" )
	if [ -d $HOME/hosts/.chk/ ]; then
		basename $HOME/hosts/.chk/*
		exit
	else
		:
	fi
	;;
    * ) exit ;;
  esac
fi

該当のkeyの場合は、下記の通り処理をします。
ここでは、$HOME直下にhostsディレクトリが存在するかチェックします。
このコマンドを最初に実行した場合は、elseの処理に入り、hostsディレクトリ及びディレクトリに現在のhostsをコピーし、処理は終了します。
※ディレクトリ生成・コピー後に処理を中断させる理由としては、hostsは人によって設定するものが違うため、各々で修正することをかねてです。(不親切かもしれませんが...)

cd $HOME
if [ -d "hosts" ]; then
  :
else
  #Initial activation
  #mkdir
  mkdir hosts
  cd hosts
    #ここは任意のディレクトリを追加指定ください。
  mkdir backup .chk "your directory"
  find . -name "hosts*" -type d -exec cp /etc/hosts {} \;
  echo "hosts update..."
  exit
fi

上記で、ディレクトリ生成・hostsのコピー・修正などが完了した後、実行すると下記が実行されます。
実行内容は、backupディレクトリにbackupされます。
$varに一致した内容のhostsを/etc/hostsに上書きを行います。
.chkディレクトリはchkeck用のファイルを格納します。
下記の、#checkはディレクトリ存在チェックを行った後、.chkの中を削除します。
削除が完了したら、この時の引数でtouch $HOME/hosts/.chk/$varします。
touchでできたファイルが、現在のhostsを確認するためのファイルになります。

#backup
cp -f /etc/hosts $HOME/hosts/backup/hosts_bk_$mm

#check
if [ -d $HOME/hosts/.chk/ ]; then
 rm $HOME/hosts/.chk/*
fi
touch $HOME/hosts/.chk/$var

#main system
#change_hosts
case "$var" in
  "xxx" ) cp $HOME/hosts/"your directory"/"xxx" $HOME/hosts/"xxx"/hosts && sudo cp -f $HOME/hosts/"your directory"/hosts /etc/hosts && rm $HOME/hosts/"your directory"/hosts ;;
  #Add as you like
esac

exit

最後に

GitHubで提供はしていますが、hostsは人によって違うものなので同じhostsは組織とかでなければ存在しないかと思っています。(いじらない人にとっては一緒ですが)
なので、このコードは基本的にはいじらないと機能しませんので、お手数ですが使用したい方は修正して使用してあげてください。

引用

Macで自作コマンドを使う方法

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?