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 ${variable
x}, 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