Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bash Array im Cron Job

0 views
Skip to first unread message

Volker Kull

unread,
Oct 5, 2008, 3:21:48 AM10/5/08
to
Hallo zuammen,
ich habe folgendes Problem:

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

Heike C. Zimmerer

unread,
Oct 5, 2008, 4:55:12 AM10/5/08
to
Volker Kull <v.k...@web.de> writes:

> 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.

Volker Kull

unread,
Oct 5, 2008, 10:33:36 AM10/5/08
to h...@hczim.de

Heike C. Zimmerer schrieb:

> 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

0 new messages