Inhaltsverzeichnis
Shell scripting
arrays benutzen
Mit Arrays hat man die Möglichkeit Werte eines defierten Typs abzuspeichern und zu bearbeiten. Arrays werden auch als Vektoren, Felder oder Reihungen bezeichnet. In der Shell-Programmierung kann man nur eindimensionale Arrays erzeugen bzw. benutzen. Mittels ${variablex}, das x steht hier für die Nummer als ganze positive Zahl des Feldes (Feldindex), wird auf die Werte zugegriffen. Bevorzugt verwendet man Arrays in Schleifen.Arrays kennt leider nur die Korn-Shell und die Bash. Die Anwendung der Arrays erfolgt in gleicher Weise. Bei der Wertzuweisung unterscheiden sie sich aber.
- Werte dem Arrays zuweisen
Wenn Sie in das array farbe einen Wert ROT in ein schreiben wollen, müssen Sie den Feldindex angeben.
Hier haben wir das zweite Feld von mit einer Zeichenkette belegt.
farbe[2]="ROT"
Sinnvoll ist es mit dem Feldindex 0 zu beginnen
farbe[0]="ROT" farbe[1]="GELB" farbe[2]="GRUEN" farbe[3]="BLAU"
in dem Shell array dürfen die Felder aber auch Lücken enthalten.
CCF Shell Programmierung
Basis Konfiguration
Bei diversen Projekten hat sicht gezeigt, dass eine effektive Shell Programmierung nur durch die Trennung von Konfigurationsdaten und dem eigentlichen Programmcode erreicht werden kann. Anbei will ich zeigen, wie dies realisiert werden kann.Zuerst muß definiert werden wo das Basis Directory liegt und wie der PATH aussehen soll. Hierbei sollen die unterschiedlichen Betriebssysteme und individuelle Server Konfigurationen berücksichtigt werden. Programme werden immer unter einem bin und Konfigurationen unter einem etc Directory abgelegt. Als Basis Variable wurde die COMPANY_BASE eingeführt. Die COMPANY_BASE entspricht dem "root" Directory für unsere Programmierung. Der PATH sieht dann für:
export COMPANY_BASE=/ccf export COMPANY_BIN=$COMPANY_BASE/local/bin
wie folgt aus:
PATH=$PATH:$COMPANY_BASE/$(hostname)/bin:$COMPANY_BASE/$(uname)/bin:$COMPANY_BASE/local_bin
daraus resultiert, dass Programme und Kofigurationnen in folgender Reihenfolge abgearbeitet werden.
Für einen Server hpx26a001 unter HPUX sieht der PATH dann wie folgt aus:
...:/ccf/hpx26a001/bin:/ccf/HP-UX/bin:/ccf/local/bin
Für einen Server p620a003 unter AIX sieht der PATH dann wie folgt aus:
...:/ccf/p620a003/bin:/ccf/AIX/bin:/ccf/local/bin
Siehe auch: /etc/profile.local
Benötigtes Programm um Umgebungsvariable (environments) zu setzen
Ein environment2.sh shell script wird dazu benutzt um aus einem:/ccf/[HOSTNAME]/etc/environment.cfg
/ccf/[OS]/etc/environment.cfg
oder
/ccf/local/etc/environment.cfg
vordefinierte Umgebungsvariable auszulesen, die in unseren shell scripten benutzt werden sollen.
Anbei ein Ausschnitt von einer Konfigurationsdatei.
#Hostname/Standard #Environment #Variable #----------------------------------------------------------------------- ... STANDARD #SYSTEM_NAME #`hostname` STANDARD #DATE_DAY #`date +%y%m%d` STANDARD #DATE_FILE #`date +%Y%m%d_%H%M%S` STANDARD #LOGDIR #/tmp STANDARD #LOGOWNER #root:sys STANDARD #LOGPERM #644 STANDARD #REPORTLOGFILE #$LOGDIR/`date +%y%m%d`_CCF.log STANDARD #REPORTOWNER #root:sys STANDARD #REPORTPERM #644 STANDARD #TMPFILEDIR #/tmp STANDARD #CONFIGDIR #$COMPANY_BIN/../etc STANDARD #ORACONFIGDIR #/usr/local/oracle/etc STANDARD #BACKUP_CONFIG #$COMPANY_BASE/`hostname`/etc STANDARD #CLEANUP_AGE #45 STANDARD #FIND_EXCLUDE #"/SD_CDROM" STANDARD #TRUE #1 STANDARD #FALSE #0 STANDARD #RTN_CODE #0 STANDARD #RTN_BORDER #0 STANDARD #MAIL_RECEIVER #"Reinhold.Flecke@xxx.com" ...
Basis Funktionen definieren
Da viele Funktionalitäten immer wieder benötigt werden, wurden diese in dem Shell script functions2.sh definiert. Diese können dann im Hauptprogramm genutzt werden.Anwendungen erstellen
Mittels einiger shell scripte werde ich den Zusammenhang von Konfigurations files, dem shell script functions2.sh und environment2.sh erklären.HPUX image backup
script make_net_recovery.sh zum erstellen eines IgniteUX OS image backup.script um beliebige Kommandos auszuführen
run_command.sh