"integer expected" nur bei cron Ausführung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mclien
Beiträge: 2427
Registriert: 06.12.2005 10:38:46
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Baustelle

"integer expected" nur bei cron Ausführung

Beitrag von mclien » 16.05.2018 15:54:06

Ich aheb ein kleines script, dass den Plattenplatz von einem entfernten Rechner als Zahl einsammeln soll und dann mit einem Schwellwert vergleichen soll. Und eine Mail schicken soll, wenn der Wert überschritten wurde:

Code: Alles auswählen

MAX_PERC=80
HOST=<fqdn von host>
SPACE=`ssh $HOST df -HP | grep "/|mountpoint>" | awk '{ print $5 }' | cut -d'%' -f1`
if [ "$SPACE" -ge "$MAX_PERC" ]; then
  <send mail mit mailx>
fi
Soweit so gut. Führe ich das script manuel auf der cli aus, klappt alles wie gewünscht.
Lasse ich einen cronjob mit dem selben script laufen, kommt keine Mail an und ich erhalte als user eine interne mail in der ein Fehler beim Ausführen gemeldet wird

Code: Alles auswählen

line 4: [: : integer expression expected
Ich habe auch schon versucht dem script explizit nochmal ein locale mitzugeben, ohne Erfolg.

EDIT:
bei der Ausführung mit cron ist offen bar $SPACE leer. Und ich vermute das Problem ist seh speziell hier in der Umgebung: Mein Login funktioniert warz per ssh key. allerdings wir dafür ein ein Zertifikat einer PKI Karrte benötigt, was aber nur da ist, wenn ich eingeloggt bin. Da muss ich also noch eine andere Lösung finden.
Zuletzt geändert von mclien am 16.05.2018 16:11:59, insgesamt 1-mal geändert.

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: "integer expected" nur bei cron Ausführung

Beitrag von bluestar » 16.05.2018 16:10:17

ergänze hinter der Zeile "SPACE=....." mal folgendes:

Code: Alles auswählen

echo "Space: $SPACE"
Ich mutmaße mal ganz stark, das dort nicht stehen wird, weil deine SSH-Verbindung nicht will...

mclien
Beiträge: 2427
Registriert: 06.12.2005 10:38:46
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Baustelle

Re: "integer expected" nur bei cron Ausführung

Beitrag von mclien » 16.05.2018 16:12:46

Sieht wohl so aus... (siehe edit) und somit werde ich die LSG wo anders suchen müssen.
Vorweg schonmal: direkt von dem betroffenden Host kann ich kein mailx benutzen..

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: "integer expected" nur bei cron Ausführung

Beitrag von bluestar » 16.05.2018 16:18:31

Wenn du deinen SSH-Aufruf reparierst, dann steht dem nichts im Wege.

Code: Alles auswählen

ssh -4 -i /location/of/ssh-private-key -o BatchMode=yes -o UserKnownHostsFile=/location/of/ssh-known-hosts-file -o IdentitiesOnly=yes -l root server 'df --output=pcent /'
Das sollte dir weiterhelfen

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: "integer expected" nur bei cron Ausführung

Beitrag von rendegast » 17.05.2018 03:53:41

df -HP | grep "/|mountpoint>"
gibt bei mir nix aus.

... | grep "/|mountpoint>"
ist nicht automatisch eine reguläre Suche. Besser explizit derart

Code: Alles auswählen

| grep -E "/|mountpoint>" 


Mein Vorschlag

Code: Alles auswählen

df --local --output=pcent | tail -n +2

... | cut -d% -f1
... | tr -d %
-> awk, grep und cut werden überflüssig.
EDIT
-> awk, grep überflüssig. Nur coreutils.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten