Shell-Script
Zenity Shell 菜單適用於 50 多台伺服器,如何留在伺服器菜單中?
我正在嘗試製作一個 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”程式碼對我有用。謝謝你。