50以上のサーバーのZenity Shellメニュー、サーバーメニューを維持する方法は?

50以上のサーバーのZenity Shellメニュー、サーバーメニューを維持する方法は?

私は50以上のサーバーを管理するためにzenityシェルメニューを作成しようとしており、いくつかのカスタマイズ機能を追加したいと思います。例:- サーバーがダウンしたら SSH で接続し、ロード、free -m、過去 10 分間の apache/nginx ログ、 exim ログ、mysql の遅いクエリログなどを確認したいと思います。これらすべての要件を満たすスクリプトがあります。

このサーバーにはSSHキーがあるため、SSHの実行に問題はありません。

サーバーに正常にログインしましたが、問題はサーバー上でsshを実行するとスクリプトが終了し、サーバーを終了した後にスクリプトなしでローカルコンピューターの端末に移動し、サーバーメニューをインポートするためにスクリプトを再実行する必要があることです。ループを維持する方法を教えてください。つまり、サーバーメニューに滞在し、どのサーバーにもSSHで接続してからサーバーをシャットダウンすると、サーバーメニューに戻る方法を意味します。助けてください。さらにカスタマイズしたいです。

===========アイデアを提供するための短いスクリプトです。私のオリジナルスクリプトにはすべてのサーバーがあります======

#!/bin/bash
dialog --menu "select" 40 40 5 1 server.hades 2 server.fire 3 server.geb 4 server.isis 5 exit 2> /tmp/a
choice=`cat /tmp/a`
if [ $choice -eq 1 ]
then
ssh 1.2.3.4
fi
if [ $choice -eq 2 ]
then
ssh 2.3.4.5
fi
if [ $choice -eq 3 ]
then
ssh 2.3.3.5
fi
if [ $choice -eq 4 ]
then
ssh 8.3.4.8
fi
if [ $choice -eq 5 ]
then
echo "BIE BIE"
fi

ベストアンサー1

一部のループでスクリプトを実行したいようですが、ループがありません。最も簡単な修正は次のとおりです。

[... the rest of choices ...]
if [ $choice -eq 5 ]
then
  echo "BYE BYE"
  exit
fi
exec $0

最後のオプション(5)を選択すると終了し、それ以外の場合はスクリプト自体が再実行されます。

または単にループを追加してください:

while true;
do
  dialog --menu "select" 40 40 5 1 server.hades 2 server.fire 3 server.geb 4 server.isis 5 exit 2> /tmp/a
  choice=`cat /tmp/a`
  if [ $choice -eq 2 ]
  then
    ssh 192.168.187.*
  fi
  [... the rest of choices ...]
  if [ $choice -eq 5 ]
  then
    echo "BIE BIE"
    break
  fi
done

「while」コードは私にとって効果的です。ありがとうございます。

おすすめ記事