Bash Array im Cron Job

05/10/2008 - 09:21 von Volker Kull | Report spam
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?



#!/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




Volker Kull
Augartenstr. 23
75059 Zaisenhausen
 

Lesen sie die antworten

#1 Heike C. Zimmerer
05/10/2008 - 10:55 | Warnen spam
Volker Kull 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?



#!/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.

Ähnliche fragen