LoginSignup
3
0

More than 5 years have passed since last update.

自宅サーバーへのhostsをよしなに変更したいソリューション笑の提案

Last updated at Posted at 2018-12-12

本日のお昼休みにその場のノリで始まったマグロ大学、もとい近畿大学のエンジニア見習いが今日から毎日書いていくであろうアドベントカレンダー1日目(12日目)の記事です。

一発目という事で技術よりですが軽めの記事です。

何のソリューション?

LAN内の自宅サーバーにsshしたいときどのように接続しますか?
ssh $user@$domainとかやりたいですが、ローカルなので何もしないままではドメインで接続できません。

内向きDNSを建ててドメインをサーバーIPに向けてやればできないこともないですが私はもう二度とBINDには触れたくありません。

じゃあhostsを書き換えてやろうとなるわけですね。なりますね。

sudo echo "192.168.xxx.yyy $domain" >> /etc/hosts
これで無事接続できるようになりますね。

が、これが家の内外で使うノートPCだとまた不具合が出るわけです。

外出先でsshしたくなったらhostsの上記の行をコメントアウトしてやらなければなりません。。。

なんとダサい。

というわけで今回はこんな煩わしい問題を解決するためのソリューションのご提案です。

なにするん?

手軽に用意したかったこともあり、ネットワーク状況の変更を見て家であればhostsを~みたいなことはしませんでした。

しかし、よく使うターミナル上手軽に変更したかったので適当なディレクトリにパスを通してそこにスクリプトを置くことでコマンドっぽく実行できるようにします。

どうするん?

具体的には適当なディレクトリにスクリプトと外用、内用のhostsをそれぞれ置いて、スクリプトから/etc/hostsへコピーします。

    $ mkdir ~/programfiles
    $ cd ~/programfiles
    $ echo "export PATH=\$PATH:$(pwd)" >> ~/.bash_profile
    $ source ~/.bash_profile
    $ cp /etc/hosts ./
    $ cp hosts homehosts
    $ cp hosts otherhosts
    $ vi homehosts # 書く
#!/bin/bash

SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE:-$0"); pwd)

if [ $# -ne 1 ]; then
    echo "please host type in first argument"
    exit -1
fi

HOST=${1}

if [ $HOST = "home" ]; then
    eval "sudo cp ${SCRIPT_DIR}/homehosts /etc/hosts"
    echo "set host file to home preset"
    exit 0
elif [ $HOST = "other" ]; then
    eval "sudo cp ${SCRIPT_DIR}/otherhosts /etc/hosts"
    echo "set host file to other preset"
    exit 0
else
    echo "please give args \"home\" or \"other\""
    exit -1
fi

使う

$ change home # 家用hostsへ
$ change other # 外用hostsへ

もっといい感じのソリューションがあれば教えてください

3
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
3
0