MAC Adresse per script abfragen und auswerten

  • Hallo Ihr,


    möchte folgende Aufgabe per script lösen


    1. Mac Adresse der Box auslesen
    2. Mac Adresse auswerten (vergleich mit der im script stehenden MAC Adresse)
    3. wenn gleich dann script weiter verarbeiten
    4. wenn nicht übereinstimmend abruch oder löschen des scriptes


    Bin für jeden Tip dankbar.


    Gruß wertzu

  • da gibt es wie immer mehre Wege!


    entweder mit
    ifconfig in ein File schreiben und auswerten


    oder besser mit cat /proc/bus/dreambox und dann filtern mit sed

    cat /proc/bus/dreambox|sed "/ethernet/!d;s/.*=//"

    der Rest ist ja dann ganz einfach, die Ergebnisse vergleichen und auswerten!


    LG

  • Weiss nicht ob es bei dem 2.6.9 geht...

    Code
    cat /sys/class/net/eth0/address

    johnbock


    13.0/19.2
    NFS/QNAP TS-219P/debian - lenny
    NFS/eSATA SheevaPlug/emdebian (ubifs) - squeeze

  • Danke


    cat /proc/bus/dreambox|sed "/ethernet/!d;s/.*=//"


    hat das gewünschte Ergebnis gebracht :) hätte aber gerne mal eine genaue Erklärung des Befehls.... sed???


    möchte dasselbe nun auch auf meine DBox2 ausführen, /proc/bus/ aber was danach? Hab ein normales CVS Image von dietmarw auf der Box.




    Gruß wertzu

  • Danke, hab ich auch schon gefunden :) aber wenn ich mir das


    cat /proc/bus/dreambox|sed "/ethernet/!d;s/.*=//"


    so ansehe, erschliest sich mir das nicht wirklich!!


    was steht in dreambox, woher nimmt sich sed die MAC genau?


    Hoffe nur das ich mich jetzt nicht so dumm anstelle, möcht es aber genau wissen. Um es dann auch mal selber zu können.


    Gruß wertzu

  • wertzu (den namen wohl nach Einfachheit gewählt; cool ;))


    Eine berechtigte Frage, wie ich finde. Ein gewisser rrr_load hatte auch schon mal hier die gleiche Frage zu proc. Lies Dir mal die Antwort von barabas vom 27.02.2006 19:21 durch! Vielleicht wird`s dann klarer!?!
    Was sed angeht folge dem Link von LivingOn, das sind zwei verschiedene Sachen!


    Viel Erfolg beim Forschen
    Imhotep

  • Zitat

    Originally posted by wertzu
    cat /proc/bus/dreambox|sed "/ethernet/!d;s/.*=//"

    Deshalb habe den Anwort von vorhin geboten: da ist sed nicht notwendig;) Der quotierte Befehl koennte auch so geschrieben werden

    Code
    sed '/ethernet/!d;s/.*=//' /proc/bus/dreambox

    Das heisst mehr o. minder "Aus dem Stream loesche alles wo 'ethernet' nicht vokommt dann ersetze im Resultat alles zu einem '=' mit nichts".


    Wenn Du mehr ueber sed lernen moechtest suche im Google nach "sed one liners";)


    HTH

    johnbock


    13.0/19.2
    NFS/QNAP TS-219P/debian - lenny
    NFS/eSATA SheevaPlug/emdebian (ubifs) - squeeze

  • Imhotep oder (formely known as rrr_load)


    ja wertzu ist cool :smiling_face_with_sunglasses:


    Danke für den Link, bringt mich schon etwas weiter, proc wird schon klarer, jetzt muss ich nur auf der DBOX2 suchen wo ich da was finde, meine die MAC. Oder hast Du da ein TIP?



    johnbock


    Zitat

    Aus dem Stream loesche alles wo 'ethernet' nicht vokommt dann ersetze im Resultat alles zu einem '=' mit nichts


    denn Satz muss ich mir merken :)


    sogar in deutsch Danke :)


    Gruß wertzu

  • Die Erklärung dieser Befelssequenz ist ganz einfach wenn du sie in mehrere Zeilen zerlegst!



    cat /proc/bus/dreambox liefert die folgenden Zeilen (bei der 7020):

    Code
    type=DM7020
    chipset=STB045xxx
    boardrev=03
    nim=Alps -S
    nimtype=DVB-S
    ethernet=00-09-xx-xx-xx-e5



    cat /proc/bus/dreambox|sed "/ethernet/!d" löscht alle Zeilen wo nicht "ethernet" vorkommt

    Code
    ethernet=00-09-xx-xx-xx-e5


    cat /proc/bus/dreambox|sed "/ethernet/!d" | sed "s/.*=//" löscht alles bis zum "=" Zeichen (ersetzt es mit nichts). .* bedeutet bis zu dem nachfolgenden Zeichen.

    Code
    00-09-xx-xx-xx-e5



    diese Zeile mit den 3 Befehlen
    cat /proc/bus/dreambox|sed "/ethernet/!d" | sed "s/.*=//"


    kann durch diese Kurzform ersetzt werden (das 2. sed entfällt und wird mit ; ersetzt)
    cat /proc/bus/dreambox|sed "/ethernet/!d;s/.*=//"

  • Danke nochmal! :)


    habs nun mit eurer Hilfe gelöst.


    MAC=`ifconfig | sed "/eth0/!d;s/.*HWaddr.//"`


    if [ $MAC = 00:50:**:**:**:** ]
    then


    usw...usw


    Grüße wertzu