awk will nicht so wie ich will

Software besorgen und anwenden
Post Reply
Message
Author
falconx

awk will nicht so wie ich will

#1 Post by falconx »

Hallo,

ich versuche gerade ein script zu schreiben was mir per snmp eine mac adresse von einem switch ausliest. das ist noch kein problem als ausgabe erhalte ich folgendes

"SNMPv2-SMI::enterprises.11.2.14.11.5.1.9.4.2.1.2.9.0.80.141.96.245.78 = Hex-STRING: 00 50 8D 60 F5 4E"

also kein Problem setze ich AWK an und lasse mir spalte 4,5,6,7,8,9 anzeigen und setze dazwischen doppelpunkte

das wollte ich so machen

snmpwalk -v 2c -c public 192.168.0.250 SNMPv2-SMI::enterprises.11.2.14.11.5.1.9.4.2.1.2.9 | awk '{print $4":"$5":"$6":"$7":"$8":"$9}'`

allerdings
das verwunderliche ist die ausgabe danach
00:50:8D:AA:AA:AA :::::

wie zum geier kommen die Doppelpunkte da ans Ende ran ? und ich weiß auch nicht wie ich sie wegbekomme.

hat da jemand eventuell einen Tip für mich woran das liegen könnte?

Ich bedanke mich schon mal und wünsche einen guten Rutsch und ein gesundes neues Jahr

Falconx:

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

Hi,

ein frohes neues Jahr erst mal!

So, nun zum Thema: Nachdem ich auf den ersten Blick weder im Gedankengang noch in der Ausführung einen Fehler sehen konnte, habe ich einfach mal die Beispielsausgabe und das awk.Script mittels C'n'P übernommen und ausgeführt. Also steht jetzt in der Datei "snmpout.txt":

Code: Select all

SNMPv2-SMI::enterprises.11.2.14.11.5.1.9.4.2.1.2.9.0.80.141.96.245.78 = Hex-STRING: 00 50 8D 60 F5 4E
Und der Aufruf lautet:

Code: Select all

awk '&#123;print $4"&#58;"$5"&#58;"$6"&#58;"$7"&#58;"$8"&#58;"$9&#125;' < snmpout.txt
Und der Output ist dann auch wie erwartet:

Code: Select all

00&#58;50&#58;8D&#58;60&#58;F5&#58;4E
:?: Dein Problem ist also mit den hier geposteten Daten nicht nachzuvollziehen...

Was ich jetzt mal tippen würde: Gibt Dir snmpwalk mehr als nur eine Zeile aus? Weil vor den geschweiften Klammern keine Auswahlbedingung steht, greift das Skript für jede Eingabezeile - auch Leerzeilen beispielsweise. Und da dann in $4 - $9 nix drin steht, bekommst Du eine Reihe Doppelpunkte. Weshalb da aber u.a. falsche Werte und kein Zeilenvorschub herauskommen, kann ich mir so auch nicht erklären. Ist das wirklich so die exakte Ausgabe?

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Alex.MH

#3 Post by Alex.MH »

Hi,
allerdings
das verwunderliche ist die ausgabe danach
00:50:8D:AA:AA:AA :::::
Das passiert immer dann, wenn die Ausgabe mehrere Zeilen hat. Vermutlich gibt snmpwalk noch eine Leerzeile oder aehnliches aus. Da es in einer Leerzeile keine Spalte 4,5,6,7,8 oder 9 gibt, bekommst du auch nur Doppelpunkte.

Gruss,
Alex

falconx

#4 Post by falconx »

alles klar ich bedanke mich bei euch

es lag an der leerzeile die snmpwalk warum auch immer ausgibt.
hab nun ein "| head -n1" vor awk gehangen und shcon geht es.

SUPER danke

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#5 Post by jochen »

Also wenn Du schon den awk benutzst, kannst Du Dir head auch sparen:

Code: Select all

awk 'NR == 1 &#123;print $4"&#58;"$5"&#58;"$6"&#58;"$7"&#58;"$8"&#58;"$9&#125;'
Die Auswahlbedingung bewirkt, dass die Aktion nur für die erste Zeile ausgeführt wird.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

falconx

#6 Post by falconx »

wieder was gelernt :)

hab das gleich mal mit eingebaut

Post Reply