Am o problemă cu un script shell pe care îl scriu, în care face tot ce trebuie să facă, cu excepția faptului că nu va ieși din submeniuri și nici nu va ieși complet din script când se află într-un submeniu.
Iată ce am făcut până acum. Am redactat părți din ea din cauza confidențialității muncii:
#!/bin/bash
#Acum pentru meniul principal...
in timp ce :
do
clar
pisica<<EOF
=======================================
DCO Toolbox 0.5a
=======================================
Dacă nu este stricat, reparați-l până când este
--------------------------------------
Bine ati venit!
Vă rugăm să alegeți pe ce site vă aflați:
Un site nou sau existent A (1)
Un site nou sau existent B (2)
--------------------------------------
EOF
( citiți -n1 -s
cazul „$REPLY” în
„1”) echo „Merg la acel meniu acum”
somn 1
in timp ce :
do
clar
pisica<<EOF
=======================================
DCO Toolbox 0.5a
========================================
SITE A MENIU
---------------------------------------
Vă rugăm să alegeți:
Schimbați DA (1)
Schimbați site-ul (2)
Schimbați numărul de rack (3)
Testați conectivitatea portului DA (4)
Testați nivelurile luminii portului DA (5)
Verificați comanda portului DS (6)
Verificați vecinii DS LLDP (7)
(Părăsi
---------------------------------------
EOF
( citiți -n1 -s
cazul „$REPLY” în
„1”) echo „Să schimbăm acel DA/DS, introduceți unul nou: „
citeste da
echo „Se setează asta acum..”
;;
„2”) echo „Să schimbăm numele site-ului, introduceți unul nou: „
site de citit
echo „Se setează asta acum..”
;;
„3”) echo „Să schimbăm rack-ul țintă, introduceți unul nou: „
citire rack
echo „Se setează asta acum..”
;;
„4”) echo „Se testează conectivitatea portului DA...”
sshpass -p $parolă ssh $nume utilizator@$da.$site „sh int et21/1-24/4 status”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„5”) echo „Se testează nivelurile luminii portului DA...”
sshpass -p $parolă ssh $nume utilizator@$da.$site „sh int et21/1-24/4 transceiver”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„6”)
sshpass -p $parolă ssh $nume utilizator@ds01.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds02.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds03.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds04.$site „sh int desc | inc $rack”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„7”) echo „Se verifică vecinii DS LLDP...”
sshpass -p $parolă ssh $nume utilizator@ds01.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds02.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds03.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds04.$site „sh lldp neigh | inc $rack”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„Q”) pauză 2;;
"q") echo -e $blinkred"EROARE: "$roșu"Woa! Sensibil cu majuscule și minuscule, amice!" $niciuna ;;
* ) echo "Ne pare rău, opțiune nevalidă!" ;;
esac
somn 1 ) | tee $today.log
Terminat
pauză
;;
„2”) echo „Merg la acel meniu acum”
somn 1
in timp ce :
do
clar
pisica<<EOF
=======================================
DCO Toolbox 0.5a
========================================
MENIU SITE B
---------------------------------------
Vă rugăm să alegeți:
Schimbați dispozitivul (1)
Schimbați site-ul (2)
Schimbați numărul de rack (3)
Testează conectivitatea portului (4)
Testare niveluri de lumină porturi (5)
Verificați comanda portului (6)
Verificați vecinii LLDP (7)
(Părăsi
---------------------------------------
EOF
( citiți -n1 -s
cazul „$REPLY” în
„1”) echo „Să schimbăm acel DA/DS, introduceți unul nou: „
citeste da
echo „Se setează asta acum..”
;;
„2”) echo „Să schimbăm numele site-ului, introduceți unul nou: „
site de citit
echo „Se setează asta acum..”
;;
„3”) echo „Să schimbăm rack-ul țintă, introduceți unul nou: „
citire rack
echo „Se setează asta acum..”
;;
„4”) echo „Se testează conectivitatea portului DA...”
sshpass -p $parolă ssh $nume utilizator@$da.$site „sh int et21/1-24/4 status”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„5”) echo „Se testează nivelurile luminii portului DA...”
sshpass -p $parolă ssh $nume utilizator@$da.$site „sh int et21/1-24/4 transceiver”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„6”)
sshpass -p $parolă ssh $nume utilizator@ds01.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds02.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds03.$site „sh int desc | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds04.$site „sh int desc | inc $rack”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„7”) echo „Se verifică vecinii DS LLDP...”
sshpass -p $parolă ssh $nume utilizator@ds01.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds02.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds03.$site „sh lldp neigh | inc $rack”
sshpass -p $parolă ssh $nume utilizator@ds04.$site „sh lldp neigh | inc $rack”
read -rsp $'Apăsați orice tastă pentru a continua...\n' Tasta -n1
;;
„Q”) pauză 2;;
"q") echo -e $blinkred"EROARE: "$roșu"Woa! Sensibil cu majuscule și minuscule, amice!" $niciuna ;;
* ) echo "Ne pare rău, opțiune nevalidă!" ;;
esac
somn 1 ) | tee $today.log
Terminat
pauză
;;
esac
)
Terminat
Am un meniu principal și două submeniuri:
Meniu principal
|
|_____ Submeniul site-ului A
|
|_____ Submeniul site-ului B
Cu o opțiune (Q) pentru a ieși înapoi la meniul principal, dar nu pot să ies înapoi la meniul principal. Am încercat:
pauză 2;;
Și:
întoarcere ;;
Dar ambele par să nu funcționeze deloc. Scriptul face bucle înapoi în același sub-shell.
Orice ajutor ar fi primit cu mare recunoștință. Mulțumiri!