Um den Zustand eines Servers automatisch abzufragen erzeuge ich mir
mit dem unten angegebenen Script eine Email die dann per cronjob
einmal in der Woche aufgerufen werden soll.
Starte ich das Skript von einer normalen Bash heraus funktioniert alles
wie erwartet. Wird das Script vom cronjob aus gestartet funktioniert
das Zuweisen der Werte zu den Arrays nicht mehr:
/etc/scripts/systeminfo.sh: 28: command_list[2]=uptime: not found
/etc/scripts/systeminfo.sh: 29: command_list[3]=df -h: not found
Die PATH Variable exportiere ich zu Beginn des Scriptes. Es ist
eigentlich egal was dem Array zugewiesen wird. Die Fehlermeldung
erscheind immer.
Was läuft hier falsch?
-- schnipp --
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export PATH
newline=""
seperator="-------------------------------------------------------"
email_to=xxxx@yyyy
email_cc=xxxx@yyyy
email_subject="System Informationen - "`hostname`
email_body=email_body_$$.txt
command_list[0]="uptime"
command_list[1]="df -h"
command_list[2]="pstree"
command_list[3]="cat /proc/mdstat"
command_list[4]="/etc/scripts/test_update.sh"
command_desc[0]="System Laufzeit"
command_desc[1]="Festplatten Auslastung"
command_desc[2]="Aktive Prozesse"
command_desc[3]="RAID Status"
command_desc[4]="Software Updates"
index=0
element_count=${#command_desc[*]}
(
while [ "$index" -lt "$element_count" ]
do
echo $seperator
echo $index. ${command_desc[$index]}
echo $seperator
${command_list[$index]}
echo $newline
let "index+=1"
done
) > $email_body
# Email verschicken
mutt -s "$email_subject" -c $email_cc $email_to < $email_body
rm $email_body
-- schnapp --
--
Volker Kull
Augartenstr. 23
75059 Zaisenhausen
> Starte ich das Skript von einer normalen Bash heraus funktioniert alles
> wie erwartet. Wird das Script vom cronjob aus gestartet funktioniert
> das Zuweisen der Werte zu den Arrays nicht mehr:
> [...]
> Was läuft hier falsch?
>
>
> -- schnipp --
>
> #!/bin/bash
Nach den "schnipp" ist eine Leerzeile. Ist das ein Übernahmefehler oder
steht der Shebang (#!/bin/bash) nicht in der ersten Zeile? Dann wird er
nicht erkannt.
Deine Fehlermeldung deutet darauf hin, dass das Skript nicht von Bash,
sondern einer anderen Shell ausgeführt wird (Arrays sind eine
Bash-Erweiterung). Das würde also zum fehlpositionierten Shebang
passen.
Hm, ich schau mal..
jepp, ich hatte am Anfang noch eine Leerzeile - fiel mir gar nicht auf!!
Dankeschön - schönes WE
:-)
Volker