kleinerroemer: HEX raw type

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

  1. 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

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. 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
      
      1. 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

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
        1. Es gibt ein Perlmodul

          Das verwende ich eh... es gibt auch was aus.. nur leider das falsche (aber auch nur bei dieser OID).

          lg.

  2. 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

    1. 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

      1. 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 )

        1. 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.

          1. Moin,

            gib mal ein bischen mehr Input, auf welchen OS arbeitest Du, was sind das für Maschinen, die Du abfragst usw.

            --Klug

            1. 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

              1. Mahlzeit,

                wie sehen denn die anderen Zeichen auf der Konsole aus, wenn Du einen snmpwalk machst? Und was sagt locale?

                Grüße vom Klugscheiser

                1. 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

                  1. 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

                    1. 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

                      1. 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

                        1. 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=

                          1. 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

                            1. 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-8

                              interessant. 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

                              1. 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

                                1. 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...

                                  1. 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

                                    1. ok danke.. guter tip.. werd ich mir anschaun

                                      schönes Weekend schonmal.. und danke für die Hilfe

                                      1. 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.

                                  2. 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

                                    1. Achtung lange Ladezeit!

                                      Na das is ja mal eine liste.... ;)

                                      http://standards.ieee.org/regauth/oui/oui.txt

                                      coole sache.. ;)