Ich versuche, Befehl 3 auszuführen und die Ausgabe als eine Variable zu erhalten, die eine prozentuale Berechnung benötigt und die gleiche wie das Beispiel anzeigt. kann dies als Skript ausgeführt werden.awk num Funktionsfehler
Ich kann die Daten auf dem Host nicht speichern, wo ich den Befehl ausführe, Mein Skript wird auf dem lokalen System sein, das auf dem entfernten Host ausgeführt wird und die Daten zu meinem lokalen Rechner zurückbringt. Gibt es einen möglichen Ansatz, um diese Aufgabe zu erfüllen?
Erste Ausgabe des Befehls
$ isi status -q | grep -e "^Size" -e "^Used" -e "^Avail"
Size:573T
Used:448.0T
Avail:74T
zweiten Befehlsausgabe
$ isi_classic snapshot usage | tail -n 1 | awk '{printf "\t\t\tSnapshot USED %=%.1f%%\n", $4}'
Snapshot USED =0.6%
$ isi_classic snapshot usage | tail -n -1 | awk '{ print "\t\t\tSnapshot USED:" $1}'
Snapshot USED=3.2T
Beispielskript awk-Skript funktioniert nicht. nach entfernten Raum
# isi status -q | grep -e "^Size" -e "^Used" -e "^Avail" | awk 'function print (num)
pipe pipe quote> /Size:/ {TotalSize=$NF~}
pipe pipe quote> /Used:/ {TotalUsed=$NF}
pipe pipe quote> /Avail:/ {TotalAvail=$NF} }
pipe pipe quote> END {
pipe pipe quote> used=TotalUsed/Total_Size*100
pipe pipe quote> system("isi_classic snapshot usage | tail -n -1 | awk '{ print "Snapshot_used=" $1}'")
pipe pipe quote> system("isi_classic snapshot usage | tail -n 1 | awk '{printf "Snapshot_per :%.1f\n", $4}'")
pipe pipe quote> Usedw/o=Total Used-Snapshot USED/Total Size
pipe pipe quote> print hostname ": " "\t","Total Size:" Total_Size
pipe pipe quote> printf "\t\t\tTotalUsed:%.1f\n", TotalUsed, "TB"
pipe pipe quote> printf "\t\t\tTotalAvail:%.1f\n", TotalAvail, "TB"
pipe pipe quote> printf "\t\t\tTotalUsed %:%.1f\n", used, "TB"
pipe pipe quote> printf "\t\t\tSnapshot Used :%.1f\n", Snapshot_used, "TB"
pipe pipe quote> printf "\t\t\tSnapshot Used %:%.1f\n", Snapshot_per, "TB"
pipe pipe quote> printf "\t\t\tUsed w/o:%.1f\n", Usedw/o, TB)'
awk: syntax error at source line 1
context is
function >>> print <<< (num)
missing }
missing)
awk: bailing out at source line 7
Probe Anforderung
Total Size : 573 TB
Total Used : 448.0 TB
Total Available : 74 TB
Total Used % : 86.1 % # Total Used(%) = Total Used/Total Size *100 = 86.1(%)
Snapshot Used : 3.2 TB
Snapshot Used % : 0.6 %
Used w/o : 85.5 % # {(Total used)-(Snapshot used)}/(Total size) = 85.49%
Wenn Ihre Frage zu normalisieren ist über Awk, loswerden all die fremden Sachen. Speichere die Ergebnisse von 'isi status -q | grep -e "^ Größe" -e "Verwendet" -e "Avail" in einer Datei. Machen Sie diese Datei so klein wie möglich (eine Zeile?), Wo es immer noch das Problem mit Ihrem awk-Befehl zeigt. Machen Sie das awk-Skript so klein wie möglich, wo es immer noch den Fehler gibt. Es ist eine gute Chance, bis Sie das Problem sehen, aber wenn nicht die kleine Eingabe, das kleine Skript, das erwartete Ergebnis und das tatsächliche Ergebnis. – jas
Ich werde dies auf mehreren Hosts ausführen und jetzt können wir die Ausgabe in einer Datei speichern (nicht erlaubt). Auf meinem lokalen System wird dieses Skript vorhanden sein und ich werde dieses Skript auf dem Host ausführen und das Ergebnis zurück in eine Datei bringen. – Shanker
@jas sagt dir nicht, dass das die Lösung ist, sie sagt dir, wie man ein [mcve] erstellt, um deine Frage zu stellen. Du fragst nach Hilfe, um die Ausgabe von 'isi_whatever' zu parsen - wir haben diesen Befehl nicht, also woher wissen wir, was er ausgegeben hat/die Eingabe von awk sieht aus, wenn du uns nicht zeigst? Was ist "Beispielanforderung" - die Beispieleingabe oder die erwartete Ausgabe? Was auch immer es ist, der andere fehlt. Siehe [fragen], wenn das nicht klar ist. –