G
Gast123
Hallo Leute,
ich habe das komische Problem, dass eines meiner Shellskripte nicht funktioniert, wenn es als Cronjob ausgeführt wird:
Wenn ich es in einer Konsole ausführe, tut es was es soll.
Leider nicht, wenn es durch root's Crontab ausgeführt wird.
Dann erhalte ich eine Systemmail mit dem Inhalt:
Ich kann das überhaupt nicht nachvollziehen.
MfG
Schard
PS: Es geht nachdem ich das
durch
ersetzt habe.
Ich würde trotzdem gerne verstehen, warum cut in der Konsole functioniert, nicht aber in Cron.
PPS: Aha. Wenn das Skript übder die Crontab ausgeführt wird, wird der Charakter "°" nicht dargestellt. Warum auch immer.
Ich hab
jetzt durch
ersetzt. das geht nun in beiden Fällen.
Komische Sache...
ich habe das komische Problem, dass eines meiner Shellskripte nicht funktioniert, wenn es als Cronjob ausgeführt wird:
Code:
#! /bin/bash
HDDTEMP=/usr/sbin/hddtemp
MIN_TEMP_THRESH=0
MAX_TEMP_THRESH=60
VERBOSE=false
RETVAL=0
USAGE="Usage: `basename $0` { ARGS.. }
ARGS:
-min, --min-temp VAL Set Minimum temperature threshold to VAL °C
-max, --max-temp VAL Set Maximum temperature threshold to VAL °C
-v, --verbose Print verbose information
(C) 2012 Richard Neumann"
eval_disk_temp() {
local DISK_TEMP="$1"
local DISK_TEMP_VAL=$(echo "$DISK_TEMP" | /bin/cut -d "°" -f 1)
if [ $DISK_TEMP_VAL -le $MIN_TEMP_THRESH ]; then
echo -e "\e[1;34m$DISK_TEMP\e[00m"
return 1
elif [ $DISK_TEMP_VAL -ge $MAX_TEMP_THRESH ]; then
echo -e "\e[0;31m$DISK_TEMP\e[00m"
return 2
else
echo -e "$DISK_TEMP"
return 0
fi
}
measure_disks() {
for DISK in /dev/sd?; do
HDDTEMP_REPLY="`$HDDTEMP $DISK`"
DISK_DEV="`echo $HDDTEMP_REPLY | cut -d ":" -f 1`"
DISK_NAME="`echo $HDDTEMP_REPLY | cut -d ":" -f 2`"
DISK_TEMP="`echo $HDDTEMP_REPLY | cut -d ":" -f 3`"
echo -en "Disk: $DISK_DEV"
if ($VERBOSE); then
echo -en "\n\t$DISK_NAME\n\t"
eval_disk_temp $DISK_TEMP
RETVAL=$(($RETVAL+$?))
else
echo -en "\t\t\t"
eval_disk_temp $DISK_TEMP
RETVAL=$(($RETVAL+$?))
fi
done
return $RETVAL
}
while (( $# )); do
case $1 in
-v|--verbose) VERBOSE=true
;;
-min|--min-temp) MIN_TEMP_THRESH=$2
shift
;;
-max|--max-temp) MAX_TEMP_THRESH=$2
shift
;;
-h|--help) echo -e "$USAGE"
exit 0
;;
*) echo -e "ERROR:\tUnknown command '$1'" 1>&2
exit -1
esac
shift
done
measure_disks
Leider nicht, wenn es durch root's Crontab ausgeführt wird.
Dann erhalte ich eine Systemmail mit dem Inhalt:
Code:
From root@weinheim.localdomain Wed Jul 24 11:41:02 2013
Return-Path: <root@weinheim.localdomain>
X-Original-To: root
Delivered-To: root@weinheim.localdomain
Received: by weinheim.localdomain (Postfix, from userid 0)
id 74B9FD60900; Wed, 24 Jul 2013 11:41:02 +0200 (CEST)
From: root@weinheim.localdomain (Cron Daemon)
To: root@weinheim.localdomain
Subject: Cron <root@weinheim> /usr/local/sbin/disktemps > /etc/disktemps
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20130724094102.74B9FD60900@weinheim.localdomain>
Date: Wed, 24 Jul 2013 11:41:01 +0200 (CEST)
/bin/cut: the delimiter must be a single character
Try `/bin/cut --help' for more information.
/usr/local/sbin/disktemps: line 21: [: -le: unary operator expected
/usr/local/sbin/disktemps: line 24: [: -ge: unary operator expected
/bin/cut: the delimiter must be a single character
Try `/bin/cut --help' for more information.
/usr/local/sbin/disktemps: line 21: [: -le: unary operator expected
/usr/local/sbin/disktemps: line 24: [: -ge: unary operator expected
/bin/cut: the delimiter must be a single character
Try `/bin/cut --help' for more information.
/usr/local/sbin/disktemps: line 21: [: -le: unary operator expected
/usr/local/sbin/disktemps: line 24: [: -ge: unary operator expected
Ich kann das überhaupt nicht nachvollziehen.
MfG
Schard
PS: Es geht nachdem ich das
Code:
/bin/cut -d "°" -f 1
Code:
awk -F'°' '{print $1}'
Ich würde trotzdem gerne verstehen, warum cut in der Konsole functioniert, nicht aber in Cron.
PPS: Aha. Wenn das Skript übder die Crontab ausgeführt wird, wird der Charakter "°" nicht dargestellt. Warum auch immer.
Ich hab
Code:
/bin/cut -d "°" -f 1
Code:
grep -oE '[0-9]*[0-9]'
Komische Sache...
Zuletzt bearbeitet von einem Moderator: