Hallo,
ich habe vor ein Script für alle 4 srv zu nutzen und wollte nun das so lösen
WEBSRV=`hostname -s | cut -c 7-8`
if [ "x$WEBSRV" != "01" -o "x$WEBSRV" != "02" -o "x$WEBSRV" != "03" -o "x$WEBSRV" != "04" ]; then
echo "ERROR: Hostname is not a correct WEBSRV name (e.g. WEBSRV61)"
exit 1
fi
Ich ging davon aus das sich eventuell beim hostnamen ein tippfehler einschleichen könnte und wollte das in jedem Fall verhindern.
hostname WEBSRV ist überall gleich gefolgt von einem Oktett. was ich abfragen will. (muss statisch sein)
Es soll nach WEBSRV eine vorgegebene Zahl stehen 01 - 04
Ich dachte weiterhin das ich das wie oben hinbekomme was aber leider nicht klappt das nicht und ich weis trotz googlmania nicht weiter.
hat jemand einen Tipp ?
Danke
if Schleife mit oder Abfrage
Re: if Schleife mit oder Abfrage
If ist keine Schleife, sondern eine Bedingung, und wird nur einmal ausgeführt.
Für Schleifen nimmt man While.
Gruß, /root!
Für Schleifen nimmt man While.
Gruß, /root!
Re: if Schleife mit oder Abfrage
Du könntest auch eine case-Anweisung nehmen. Dort kannst du eine regex verwenden und dann eine bestimmte Aktion oder Funktion aufrufen und für alles andere gibst du die gewünschte Fehlermeldung aus.
Oh, yeah!
Re: if Schleife mit oder Abfrage
Naja, ob jetzt Schleife oder nicht / case oder if... in dem geposteten Codeschnipsel sind jedenfalls zwei Sachen falsch:
- wenn schon "x$WEBSRV" dann sollte es auch "x01" sein
- und überleg noch mal wann das Skript abbrechen soll, deine Bedingung so wie sie dasteht (auch wenn man Punkt 1 korrigiert) ist immer wahr - das Skript bricht also immer ab
Re: if Schleife mit oder Abfrage
z.B könntest du "-a" (and), statt "-o" (or) verwenden, oder du verwendest Pattern Matching:
Gruß
gms
Code: Alles auswählen
if [[ $WEBSRV != 0[1-4] ]]; then
echo "ERROR: ...."
exit 1
fi
gms
-
- Beiträge: 60
- Registriert: 24.06.2007 20:28:57
Re: if Schleife mit oder Abfrage
Hallo Leute
Danke habt mir sehr geholfen hier mal mein Ergebnis (bin script newbie)
die IP 's hab ich geändert
wenn es einer eleganter kann immer her damit (man muss es noch verstehen können)
#start
WEBSRV=`hostname -s | cut -c 7-8`
BIN_IFCONFIG=/sbin/ifconfig
IP_ETH=192.123.$WEBSRV.
IP_LO=122.100.9.
VON=50
BIS=152
RANGEIF=`seq $VON $BIS`
if [ $WEBSRV = "10" -o $WEBSRV = "20" -o $WEBSRV = "30" -o $WEBSRV = "40" ] ; then
for IFACE in $RANGEIF; do
$BIN_IFCONFIG eth1:$IFACE inet $IP_ETH$IFACE
$BIN_IFCONFIG lo:$IFACE inet $IP_LO$IFACE
done
echo "Hostname OK"
else
echo "Hostname not OK"
exit 0
fi
echo "Logival Interfaces coming up"
#stop
WEBSRV=`hostname -s | cut -c 7-8`
BIN_IFCONFIG=/sbin/ifconfig
IP_ETH=192.123.$WEBSRV.
IP_LO=122.100.9.
VON=50
BIS=152
RANGEIF=`seq $VON $BIS`
echo -n "Stopping ipaliases"
for IFACE in $RANGEIF; do
ifconfig eth1:$RANGEIF $IP_ETH$RANGEIF down
ifconfig lo:$RANGEIF $IP_LO$RANGEIF down
done
echo "Logical Interfaces down"
hab das ganze noch in ein case script verpackt .... toll
danke nochmal
Danke habt mir sehr geholfen hier mal mein Ergebnis (bin script newbie)
die IP 's hab ich geändert
wenn es einer eleganter kann immer her damit (man muss es noch verstehen können)
#start
WEBSRV=`hostname -s | cut -c 7-8`
BIN_IFCONFIG=/sbin/ifconfig
IP_ETH=192.123.$WEBSRV.
IP_LO=122.100.9.
VON=50
BIS=152
RANGEIF=`seq $VON $BIS`
if [ $WEBSRV = "10" -o $WEBSRV = "20" -o $WEBSRV = "30" -o $WEBSRV = "40" ] ; then
for IFACE in $RANGEIF; do
$BIN_IFCONFIG eth1:$IFACE inet $IP_ETH$IFACE
$BIN_IFCONFIG lo:$IFACE inet $IP_LO$IFACE
done
echo "Hostname OK"
else
echo "Hostname not OK"
exit 0
fi
echo "Logival Interfaces coming up"
#stop
WEBSRV=`hostname -s | cut -c 7-8`
BIN_IFCONFIG=/sbin/ifconfig
IP_ETH=192.123.$WEBSRV.
IP_LO=122.100.9.
VON=50
BIS=152
RANGEIF=`seq $VON $BIS`
echo -n "Stopping ipaliases"
for IFACE in $RANGEIF; do
ifconfig eth1:$RANGEIF $IP_ETH$RANGEIF down
ifconfig lo:$RANGEIF $IP_LO$RANGEIF down
done
echo "Logical Interfaces down"
hab das ganze noch in ein case script verpackt .... toll
danke nochmal
Re: if Schleife mit oder Abfrage
Würde die IF-Abfrage Schreibweise von gms verwenden.
Zudem brauchst du die identische Konfiguration nicht 2mal im Skript aufzuführen. Einmal reicht.
Eventuell das Starten und Stoppen in eine Funktion packen.
Zudem brauchst du die identische Konfiguration nicht 2mal im Skript aufzuführen. Einmal reicht.
Eventuell das Starten und Stoppen in eine Funktion packen.
Oh, yeah!