awk-Vergleich auf Ubuntu

awk-Vergleich auf Ubuntu

Ich versuche, ein Skript zu schreiben, das die Festplattennutzung von Remote-Clients überprüft. Im Skript gibt es einen Filter für eine aussagekräftige Ausgabe:

...

ssh server "sudo df -Ph 2>/dev/null \
| tail -n +2 \
| grep -v tmpfs \
| grep G| sed s/%//g \
| sed s/G//g \
| awk '{ if($5 < 20) print $0;}'" #to get only disks that the usage is under %20

...

Diese Befehlszeile läuft erfolgreich auf CentOS/RHEL-Rechnern, aber es gibt einen Fehler bezüglich des awk-Befehls in Ubuntu, wie unten:

awk: cmd. line:1: { if( < 20) print bash;}
awk: cmd. line:1:       ^ syntax error

Wie kann ich in Ubuntu in awk einen Vergleich durchführen? Operatoren wie „-gt, -ge...“ funktionieren auch nicht.

Antwort1

Der Vergleich ist in Ordnung, das Problem ist, dass Ihnen die Variable fehlt, mit der Sie vergleichen möchten. Da Ihre gesamte SSH-Befehlszeile in Anführungszeichen steht, $5wird sie von Ihrer lokalen Shell gefressen, bevor sie überhaupt zu „ssh“ gelangt – Sie müssen sie so eingeben, um \$5das zu vermeiden. Dasselbe gilt für Letzteres $0(beachten Sie, dass die Fehlermeldung stattdessen „print bash;“ lautet).

verwandte Informationen