0
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 3 years have passed since last update.

少しでもサーバに楽してログインしたい

Last updated at Posted at 2021-06-10

仕事中

サーバの台数多くて、いちいちホスト名とかIPアドレス覚えてられんなー
サーバだけじゃなくて、ロードバランサとかのネットワーク装置もあるからいちいち管理表見ながらログインするのめんどくさいなー

ということで、慣れないシェルスクリプトを書いてサーバログインを少しだけ楽にしました。

方針

業務としてはDNSサーバの運用や各種ログサーバなどを運用しており、チームで管理しているサーバは100台以上あります。
自分の会社のサーバは英数字が羅列されたホスト名のため、パッと見ただけではどういう用途のサーバかもわかりません。

そのため、スクリプトを実行した際にホスト名や用途、IPアドレスが表示されること、選択式にして数字さえ入力すれば簡単にサーバにログインできるようにしたいと思いました。

始めは、Pythonとかで作ろうと思ったのですが、python3 ~~.py と打つのさえも少しめんどくさいため、./~~.sh とさえ入力すれば実行できるシェルスクリプトで作成しました。

完成

シェルスクリプトでつくってみました。

login.sh
# !/bin/sh

if [ -z $1 ] ; then
  echo "Usage: $0 <read_file>"
  exit 3
else
  READ_FILE=$1
  READ_FILE_LINE_NUM=`cat ${READ_FILE} | wc -l`
  column -s, -t ${READ_FILE} | nl

  echo -n "login: "
  read ANS
  if [ ${ANS} -le ${READ_FILE_LINE_NUM} ] ; then
    LOGIN_HOST=`sed -n ${ANS}p ${READ_FILE} | cut -d , -f 2`
    echo -ne "\e]2;${LOGIN_HOST}\a"
    ssh -A ${LOGIN_HOST}

    # miss or end
    CURRENT_HOST=`hostname`
    echo -ne "\e]2;${CURRENT_HOST}\a"
    exit 5
  else
    echo "${ANS} no file_line ... Select 1 - ${READ_FILE_LINE_NUM}"
    exit 4
  fi
fi

exit 0

サーバのリストが入ったテキストファイルも用意します。

serverlists.txt
sv001,10.0.0.1
sv002,10.0.0.2
sv003,10.0.0.3

実行してみます。
ファイル名長くない?と思うかもしれませんが、タブ補完使えば気になりません。

$ ./login.sh serverlists.txt 
     1  sv001  10.0.0.1
     2  sv002  10.0.0.2
     3  sv003  10.0.0.3
login: 

実行すると数字、ホスト名、IPアドレスが表示され、左に紐づいている数字を入力さえすれば簡単にログインできるようになりました。
鍵がある場合は login.shssh-i オプションをつけて鍵を指定すれば簡単にログインできると思います。

感想・まとめ

業務ではサーバに入って作業をすることは多いものの、シェルスクリプトは初心者で調べながらつくりました。
こういう身近な自動化スクリプトをつくって実践的に学べたので、いい経験になったと思います。
簡単なスクリプトならリファレンスを読まずにささっとつくれるようになって、より仕事を楽にしたいです。

0
0
2

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