私は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」コードは私にとって効果的です。ありがとうございます。