やりたいこと
sshでサーバーにログインして、なんらかのコマンドを実行しターミナルに表示、ミッション終了後、ターミナルを自動的にログアウトしてローカルに何事もなかったかのようにもどってくる最も簡単な方法ってなにかないでしょうか。
イメージ
従来の方法
ローカルPCのターミナル
↓ Linuxサーバーにログイン
$df $uptime などを実行
↓ Linuxサーバーをログアウト
ローカルPCにもどる
これからつくるBash/ssh
ローカルPCのターミナル
↓
Linuxサーバーにログイン
$df $uptime などを実行
Linuxサーバーをログアウト
↓
ローカルPCのターミナルにもどる
わかりにくいですか?
まず、メリットとしてサーバーでコマンドからログアウトする必要がありません。
これができれば、一台一台サーバーのヘルスチェックをせずとも、数十台のサーバーを
順番に訪ね歩きファイルに出力する事も可能です。
以下、ソースです。
#!/usr/bin/bash
##############################################
# sshでサーバーにログインして、なんらかのコマンドを
# 実行しターミナルに表示、ミッション終了後、ターミ
# ナルを自動的にログアウトしてローカルに何事もなか
# ったかのようにもどってくる最も簡単シェルスクリプト
##############################################
#
# サーバーのIPアドレスとか
SERVER="centos@xx.xx.xx.xxx"
# 実行したいコマンドを && でつなぐ
COMMAND="uptime && df -h";
echo "centosサーバーログイン";
# ポイントは -t です。
ssh $SERVER -t $COMMAND;
echo "centosサーバーログアウト";
exit;
たったこれだけですが、この工夫により多くのサーバーを
スクリプトで一括回遊することができます。 お試しあれ。