Shell-Script

Zenity Shell 菜單適用於 50 多台伺服器,如何留在伺服器菜單中?

  • May 12, 2019

我正在嘗試製作一個 zenity shell 菜單來管理 50 多台伺服器並希望添加多個自定義功能。例如:- 當伺服器出現故障時,我想在其中進行 ssh,然後檢查負載、免費 -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

看起來您想在某個循環中執行腳本,但您錯過了循環。簡單的修改可能是這樣的修改:

[... 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”程式碼對我有用。謝謝你。

引用自:https://unix.stackexchange.com/questions/363757