HEX raw type
kleinerroemer
- perl
Hi Leute!
Ich arbeite gerade an einem skript, welches über snmp verschiedenste Hostinformationen holt, und diese in eine html Seite reinschreibt.
Nun bin ich auf ein kleines Problem gestoßen:
Die Mac Adresse wird mir (soweit ich die etwas mühsam zu findenden Informationen über snmp richtig verstanden habe) hexadezimal übertragen. Wenn ich den output in eine Datei pipe.. habe ich folgenden Wert drinnen stehen: ^@0^E"^EÛ
das ist wie ich meine nicht sehr informativ...
Bis jetzt bin ich auf keine Möglichkeit gestoßen, diesen wert einfach umzuwandeln, da sich alle funktionen die ich gefunden habe, auf hexadezimal formatierte Strings beziehen...
Ich bin für alle Tips dankbar...
lg.
Kleinerroemer
Ich bin für alle Tips dankbar...
Es gibt diverse Module, vielleicht ist da was dabei:
http://search.cpan.org/~atrak/NetPacket-0.04/
http://search.cpan.org/~crazydj/Net-ARP-1.0/
http://search.cpan.org/~tpaba/Net-Ifconfig-Wrapper-0.09/
Ansonsten kannst du auch das Dienstprogramm ARP nutzen, der Schalter -a sollte helfen:
my $info = qx{arp -a};
print $info;
Die Ausgabe kannst du auch via {arp -a > arp.txt} in eine Datei schreiben und diese parsen. Aber ein Modul wäre schon besser zu handhaben, denke ich.
Siechfred
my $info = qx{arp -a};
print $info;
>
Ich hab das mal probiert.. und der output passt dann auch nicht.. bzw hab ihc keinen ;)..
also mom. denke ich das was mit dem snmp tree nicht stimmt bei mir..
danke aber mal für den tip!
lg
Ich hab das mal probiert.. und der output passt dann auch nicht.. bzw hab ihc keinen ;)..
Es gibt ein Perlmodul Net::SNMP, dessen Methode get_request in Kombination mit dem von Rolf genannten Object Identifier sollte eigentlich was ausspucken.
Siechfred
Es gibt ein Perlmodul
Das verwende ich eh... es gibt auch was aus.. nur leider das falsche (aber auch nur bei dieser OID).
lg.
moin,
Die Mac Adresse wird mir (soweit ich die etwas mühsam zu findenden Informationen über snmp richtig verstanden habe) hexadezimal übertragen. Wenn ich den output in eine Datei pipe.. habe ich folgenden Wert drinnen stehen: ^@0^E"^EÛ
So? Bei mir sehe ich das hier:
interfaces.ifTable.ifEntry.ifPhysAddress.1 = Hex: 00 03 4B FF 55 DE
Prüf mal Deine Zeichentabelle.
--Klugscheiser
moin,
Die Mac Adresse wird mir (soweit ich die etwas mühsam zu findenden Informationen über snmp richtig verstanden habe) hexadezimal übertragen. Wenn ich den output in eine Datei pipe.. habe ich folgenden Wert drinnen stehen: ^@0^E"^EÛ
So? Bei mir sehe ich das hier:
interfaces.ifTable.ifEntry.ifPhysAddress.1 = Hex: 00 03 4B FF 55 DE
Prüf mal Deine Zeichentabelle.
Hmm.. kannst du mir mal die OID sagen die du verwendet hast...
ich habe 1.3.6.1.2.1.2.2.1.6 verwendet...
--Klugscheiser
interfaces.ifTable.ifEntry.ifPhysAddress.1 = Hex: 00 03 4B FF 55 DE
Prüf mal Deine Zeichentabelle.
Hmm.. kannst du mir mal die OID sagen die du verwendet hast...
ich habe 1.3.6.1.2.1.2.2.1.6 verwendet...
Hab erst jetzt gesehen das du eh die namen dazugeschrieben hast...
also wenn ich ein snmpget auf den eintrag mache den du mir oben geschrieben hast.. ist er leer... ihc bekomme aber eine response und alles.. aber keinen wert.. ( habs auf mehreren maschinen getestet )
also wenn ich ein snmpget auf den eintrag mache den du mir oben geschrieben hast.. ist er leer... ihc bekomme aber eine response und alles.. aber keinen wert.. ( habs auf mehreren maschinen getestet )
Und noch ein nachtrag... ich glaub ich sollte mir mehr zeit mit dem antworten lassen.. ;)
und zwar.. wenn ich einen snmpwalk auf 1.3.6.1.2.1.2.2.1.6 (ifTable.IfEntry.ifPhysAddress) bekomme ich wieder den seltsamen output wie vorher...
auf einer anderen maschine bekomme ich:
^@^N^L^H^ML
^@^N^L^H^MM
lg.
Moin,
gib mal ein bischen mehr Input, auf welchen OS arbeitest Du, was sind das für Maschinen, die Du abfragst usw.
--Klug
Moin,
gib mal ein bischen mehr Input, auf welchen OS arbeitest Du, was sind das für Maschinen, die Du abfragst usw.
--Klug
also das skript rufe ich auf einem Linux rechner auf..
der hat auf allen anderen maschinen im snmp config file das recht sie abzufragen..
auf den anderen maschinen läuft Linux, windows, solaris..
ich frage momentan nur "Rechner" ab und keine andere HW (router usw.. ).
Die Informationen die ich hole sind CPUS, HDDS, IFS, OS, RAM, SWAP, MAC
soweit funktioniert alles, und es wird auch alles korrekt angezeigt.. nur der mac eintrag stimmt nicht..
sonst noch sachen die du brauchen könntest..?? ;) (ich bin ca. in einer std. wieder da)
lg. und danke für die Hilfe
Mahlzeit,
wie sehen denn die anderen Zeichen auf der Konsole aus, wenn Du einen snmpwalk machst? Und was sagt locale?
Grüße vom Klugscheiser
Mahlzeit,
danke dir auch..
wie sehen denn die anderen Zeichen auf der Konsole aus, wenn Du einen snmpwalk machst?
Naja ich hab mir so ein kleines testcript geschrieben.. das sieht so ca aus:
@get = &snmpwalk( "group@mashine","1.3.6.1.2.1.2.2.1.6") or die "no response";
foreach $desc( @get )
{
my $oid;
( $oid, $desc ) = split( ':', $desc, 2 );
print "$oid = $desc\n";
}
print "\n";
und das funktioniert einwandfrei für alle anderen OID's... hab normalen output mit dem ich was anfangen kann..
Und was sagt locale?
was meinst du mit locale..?
Grüße vom Klugscheiser
moin,
mach doch mal einen snmpwalk ganz normal. Was steht denn hinter
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
oder
1.3.6.1.2.1.2.2.1.6.1 =
den Gleichheitszeichen?
--Klug
moin,
mach doch mal einen snmpwalk ganz normal. Was steht denn hinter
wenn ich einen snmp walk auf die OID mache kriege ich keinen response.. (steht ja auch kein table mehr an der stelle)
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
oder
1.3.6.1.2.1.2.2.1.6.1 =
den Gleichheitszeichen?
bei einem:
print &snmpget( "group@maschine","1.3.6.1.2.1.2.2.1.6.x") or die "no response"; steht bei:
x=1:
x=2: 0"0"
x=3:
also diese 3 einträge gibt es unter .6.x
roemer
moin,
mach doch mal einen snmpwalk ganz normal. Was steht denn hinter
Machen Du bitte:
/usr/bin/snmpwalk -r 10 -t 10 -v 1 -Cc hostname community .1.3.6.1
und auch das mal
locale
Gruß vom Klugscheiser
Machen Du bitte:
/usr/bin/snmpwalk -r 10 -t 10 -v 1 -Cc hostname community .1.3.6.1
so sagt er mir das ich keine community angegeben habe... mit
/usr/bin/snmpwalk -r 10 -t 10 -v 1 -Cc -c hostname community .1.3.6.1 gehts aber der output is ziehmlihc LANG
soll ich ihn trotzdem posten..?
und auch das mal
locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
moin,
Machen Du bitte:
/usr/bin/snmpwalk -r 10 -t 10 -v 1 -Cc hostname community .1.3.6.1
so sagt er mir das ich keine community angegeben habe... mit
/usr/bin/snmpwalk -r 10 -t 10 -v 1 -Cc -c hostname community .1.3.6.1 gehts aber der output is ziehmlihc LANG
soll ich ihn trotzdem posten..?
nur das da:
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
oder
1.3.6.1.2.1.2.2.1.6.1 =
locale
LANG=en_US.UTF-8
interessant. Setz mal zum Testen
LANG=POSIX
LC_CTYPE=de_DE@euro
oder
LANG=de_DE@euro
LC_CTYPE=de_DE
--Klug
nur das da:
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
oder
1.3.6.1.2.1.2.2.1.6.1 =
AHA....
IF-MIB::ifPhysAddress.0 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:30:5:22:5:db
IF-MIB::ifPhysAddress.3 = STRING:
locale
LANG=en_US.UTF-8interessant. Setz mal zum Testen
LANG=POSIX
LC_CTYPE=de_DE@euro
hab ich jetzt mal gemacht..
und dann mein script wieder asugeführt und auf 1.3.6.1.2.1.2.2.1.6.2 ein snmp geht gemacht... steht nachwievor 0"0" unter der OID
moin,
IF-MIB::ifPhysAddress.0 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:30:5:22:5:db
juhu, die habe ich auch, der Vendor-Code (Hersteller) der Mac ist die erste Hälfte:
00-30-05
Intel(R) PRO/1000 CT Network Connection ;-)
Sind das Rechner von Fujitsu-Siemens?
--Klug
juhu, die habe ich auch
Sind das Rechner von Fujitsu-Siemens?
löööl Ja sind sie.. ;)
naja aber das Problem hab ich noch immer das im Skript nichts ankommt... ich weiß aber absolut nicht warum...
moin,
Du hast:
locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
und siehst die phys.Addr als String per snmpwalk im Klartext in der Konsole (Ausgabemedium utf-8).
Wenn Du _Dein_ Ausgabemedium dazu bringst, auch utf-8 zu verwenden, solltest Du dann auch dasselbe sehen.
--Klug
ok danke.. guter tip.. werd ich mir anschaun
schönes Weekend schonmal.. und danke für die Hilfe
Also ich hab mich da jetzt ein bisschen rumgespielt und bin draufgekommen das die Werte dich in meinem Skript bekomme..
tatsächlich hex werte sind.. wenn ich den STring so wie er ist in UltraEdit kopiere und auf hex werte umstelle..
zeigt er mir die richtige Mac Adresse an.. ohne den Doppelpunkten zur trennung.....
also muss ich diese WErte jetzt irgendwie in einen lesbaren string umwandeln....
lg.
juhu, die habe ich auch
Sind das Rechner von Fujitsu-Siemens?
löööl Ja sind sie.. ;)
Alles keine Hexerei, guck mal:
Achtung lange Ladezeit!
http://standards.ieee.org/regauth/oui/oui.txt
--Klug
Achtung lange Ladezeit!
Na das is ja mal eine liste.... ;)
coole sache.. ;)