[megoldva] crontab error

Sziasztok!

Van a kovetkezo kodom:


declare -A InterfaceMatrix
declare -a Counters
Begin_hour=`date +"%Y-%m-%d %H:00:00" -d "1 hours ago"`
End_hour=`date +"%Y-%m-%d %H:00:00"`
NameCounter=`ssh -i /home/zenpm/.ssh/keys/* dbadmin@****  "/opt/vertica/bin/vsql -w***** -c \"SELECT 'sor',interface_name, COUNT(*) FROM load_stats  WHERE z_timestamp BETWEEN '$Begin_hour' AND '$End_hour' GROUP BY interface_name ORDER BY interface_name;\"" | grep sor | awk '{print $0}'`
Counters=(`echo $NameCounter | awk 'BEGIN{RS=" "}{print $0}' | grep "^[0-9]"`)
Names=`echo $NameCounter | awk 'BEGIN{RS=" "}{print $0}' | grep "^[a-Z]" | sed 's/sor//g'`
let i=0
for Name in $Names; do
        let InterfaceMatrix[$Name]=${Counters[$i]}
        let i+=1
done

for Interface in $Interfaces; do
        if [ ${InterfaceMatrix[$Interface]} -gt '0' ]; then
                Error=0
                Mail=$Mail"<tr><td class=\""$Error"\">OK</td><td> "$Interface" is loading</td></tr>"
        else
                Error=1
                Mail=$Mail"<tr><td class=\""$Error"\">Error</td><td> "$Interface" is NOT loading</td></tr>"

        fi
done



A kod teljesen rendben lefut amikor kezzel inditom, de amikor crontab-bol indul, akkor az osszesre Error=1-et kapok. Vagyis szerintem az sql lekerdezes soran nem kapunk vissza semmit. Van valalkinek valalmi otlete?

Hozzászólások

Nézd meg, mi a különbség az enviroment-ben. A cron-ban mindent definiálni kell.

Ilyenkor szoktam ajánlgatni a debuggolást. Kezdetnek:


...
set -xv
exec >/tmp/debug.$$ 2>&1
...

Ha jól látom, a vsql-nek nincs megadva, hogy milyen nevű adatbázissal randevúzzon.

Netán ez az, ami a személyes könyezetetben létezik, és az ssh átpasszolja a hívott processznek, a cron környezete viszont egy kopár vidék, ahonnan alig van mit exportálni.

(verticás ismereteim = 0)

Koszonom a segitseget.

Meg lett a hiba:
Egy regexp hiba volt. A crontab nem szerette a [a-Z] kifejezeset. De [a-zA-Z]-val mukodik minden. (masik lehetoseg a LC_ALL kornyezeti valtozo beallitasa).