PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei zeilenweise auslesen und Befehl ausführen



PhoenixDH
07.09.2005, 12:36
Hab eine Datei Namens ALL_HWINFO in der Servernamen stehen in dieser Art:


fire: Precision WorkStation 360:WST
fire2: Precision WorkStation 360:WST
fire3: Precision WorkStation 360:WST


Das erste sind die Servernamen: fire, fire2, fire3

Jetzt suche ich ein Script, das mir nacheinander folgenden Befehl ausführt für alle Server in der Datei:


/cfg2html_server/cfg2html_aix/start_cfg2html.sh -a SERVERNAME


Dank euch für eure Hilfe !

Wolfgang
07.09.2005, 13:24
Hallo
for i in $(cut -d: -f1 INPUTFILE); do befehl $i ; done

Gruß Wolfgang

PhoenixDH
09.09.2005, 07:21
Funktioniert, dank dir !

PhoenixDH
13.09.2005, 08:51
So, hab nochmal eine Frage dazu:

Das Script läuft ja jetzt komplett automatisch ab, klappert aber immer jeden Server ab der in der Liste steht. Jetzt hätte ich aber auch gerne, das man es noch per Hand aufrufen kann mit folgendem Aufruf:


./cfg2html_catch_all.sh -a SERVERNAME -x SYSTEM


dann soll nur der Server angesprochen werden !

Wenn das Script ohne Paramter aufgerufen wird soll es ganz normal ausgeführt werden:


#!/bin/ksh

WEBSERVER=fire

#Verzeichnisse neu erstellen, da diese wieder gelöscht werden
if [ ! -d /cfg2html_server/docs/ ]
then
mkdir /cfg2html_server/docs/
mkdir /cfg2html_server/docs/docs_aix/
mkdir /cfg2html_server/docs/docs_hpux/
mkdir /cfg2html_server/docs/docs_linux/
mkdir /cfg2html_server/docs/docs_sun/
fi

#Start Sammeln aller Informationen
#Sammeln aller AIX Systeme
for i in $(cut -d: -f1 /cfg2html_server/cfg2html_aix/ALL_HWINFO);
do
/cfg2html_server/cfg2html_aix/start_cfg2html.sh -a $i ;
done

#Sammeln aller HP-UX Systeme
for i in $(cut -d: -f1 /cfg2html_server/cfg2html_hpux/ALL_HWINFO);
do
/cfg2html_server/cfg2html_hpux/start_cfg2html.sh -a $i ;
done

#Sammeln aller Linux Systeme
for i in $(cut -d: -f1 /cfg2html_server/cfg2html_linux/ALL_HWINFO);
do
/cfg2html_server/cfg2html_linux/start_cfg2html.sh -a $i ;
done

#Sammeln aller SUN Systeme
for i in $(cut -d: -f1 /cfg2html_server/cfg2html_sun/ALL_HWINFO);
do
/cfg2html_server/cfg2html_sun/start_cfg2html.sh -a $i ;
done

#Kopieren der Dateien auf den Webserver
scp -r /cfg2html_server/docs/ ${WEBSERVER}:/opt/lampp/htdocs/

#Löschen der Dateien auf dem Sammelserver
rm -r /cfg2html_server/docs/


aber wenn die Parameter -a -x gesetzt sind immer nur einer, also z.B.:


/cfg2html_server/cfg2html_SYSTEM/start_cfg2html.sh -a SERVERNAME ;


Dank euch für eure Hilfe, hoffe mein Text ist verständlich !

Schlaubi_fi.de
13.09.2005, 12:12
"case" ist das Stichwort...

PhoenixDH
13.09.2005, 13:55
Habs hinbekommen, danke !
Hatte nur mit der Syntax Probleme !

Wolfgang
13.09.2005, 20:16
Hallo
Kleiner Tipp:
Wenn es fehlerunanfällig und portabel sein soll,
würde ich dir mal
man getopt
empfehlen.
case in Verbindung damit macht es dann.
Gruß Wolfgang