Mac-Adresse aus Datei herausfiltern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Gayson, 21.09.2006.

  1. Gayson

    Gayson Jungspund

    Dabei seit:
    12.08.2006
    Beiträge:
    10
    Zustimmungen:
    0
    Hallo!
    Ich habe eine Datei, in der Mac-Adressen und der jeweilige Hostname aufgeführt sind, also z.B.
    Ich brauche dafür ein Skript, was bei Eingabe eines Host mir die Mac-Adresse liefert, z.B. mac=./script.sh hostname.
    Ich weiß nicht ganz, wie in der Datei Mac-Adresse und Hostname getrennt sind, ich glaube durch ein Tabulator (was gibt es noch für Möglichkeiten für einen springenden Abstand, wenn man mit dem Cursor langfährt?)
    Ich hatte schon ein wenig mit sed gespielt:
    Z.B. sollte aber sichergestellt werden, dass, wenn ich auch wirklich der richtige Host gefunden wird, wenn ich also als Host 'ei' eingebe, soll er nicht auch den Host 'eimer' finden.
    Achso, ich habe nur eine begrenzte Zahl an Tools zur Verfügung, und arbeite auf der ash-Shell.
    Danke an euch!!!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 21.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Willst du das interaktiv?
    Ausgabe auf der shell mit Eingabe des Host:
    Schnellschuss, ohne genaue Eingabeprüfung etc.
    Code:
    
    #!/bin/bash
    echo Hostname eingeben:;
    read HOST;
    echo $HOST wird gesucht;
    while read MAC H;
    do
    if [ "$H" = "$HOST" ];
    then
    echo MACADRESSE IST $MAC;
    else
    echo MACADRESSE not found;
    fi
    done <mac;
    
    mac ist dabei deine Datei wo die Adr. und Host steht.

    Gruß Wolfgang
     
  4. Gayson

    Gayson Jungspund

    Dabei seit:
    12.08.2006
    Beiträge:
    10
    Zustimmungen:
    0
    Nein, das will ich so nicht. Wie ich oben geschrieben habe, soll das Skript wie folgt funktionieren:
    macadresse=./script.sh hostname
    Und dabei in eine Datei nachschauen, die oben genannte Struktur besitzt.
     
  5. #4 SkydiverBS, 21.09.2006
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Dein Ansatz mit sed war doch schon ganz gut. Dir fehlte nur noch das Wissen das Tabulatoren mit '\t' ausgefiltert werden können.

    Du könntest es z.B. so machen:
    Code:
    sed -n 's/\tHostname$//p' /var/tmp/ethers
    Danach steht die entsprechende MAC-Adresse auf der Standardausgabe.

    Gruß,
    Philip
     
  6. #5 Wolfgang, 21.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Hier noch eine Variante für nichtinteraktive Suche.
    Code:
    #!/bin/bash
    HOST=$1;
    if [ "X$HOST" = "X" ];
    then
    echo "Use $0 Hostname";
    exit
    fi
    while read MAC H
    do
    if [ "$H" = "$HOST" ]
    then
    echo MACADRESSE IST $MAC;
    exit;
    fi
    done <mac
    echo MACADRESSE not found;
    
    Das echo kannst du dir ja anpassen.

    HTH
    Gruß Wolfgang
     
  7. #6 Xanti, 21.09.2006
    Zuletzt bearbeitet: 21.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hmm, nun hab ich mir auch was ausgedacht, wäre schade, wenn's umsonst war:

    Code:
    sed -ne "/<TAB>$host$/s/<TAB>$host$//p" /var/tmp/ethers
    
    Dabei ist <TAB> ein Tabzeichen, eingegeben durch Ctrl+V Tab.

    edit @SkydiverBS: Mein sed erkennt kein \t.

    Gruss, Xanti
     
  8. #7 DaMutz, 21.09.2006
    Zuletzt bearbeitet: 21.09.2006
    DaMutz

    DaMutz Doppel-As

    Dabei seit:
    18.10.2003
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Giebenach / Schweiz
    Code:
    #!/bin/bash
    
    HOST=$1;
    grep $HOST /var/tmp/ethers | cut -c 0-17 
    auch eine Moeglichkeit...

    aufruf: ./script.sh Host1
     
  9. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
  10. Gayson

    Gayson Jungspund

    Dabei seit:
    12.08.2006
    Beiträge:
    10
    Zustimmungen:
    0
    Hm, es klappt einfach nicht. Kann es irgendwie sein, dass mein sed kein Tab kennt? Ich habe mal ne Testdatei angelegt, in die ich 53454536554<tab>kai reingeschrieben habe.
    Dann habe ich mal die Sed-Befehle von Xanti und SkydiverBS ausprobiert - es wird nichts ausgegeben. Nehme ich jedoch z.B. \t weg, dann kommt eine Ausgabe...
     
  11. #10 Xanti, 21.09.2006
    Zuletzt bearbeitet: 21.09.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wie gesagt, sed kennt kein \t. Zumindest mit Ctrl+V Tab funktioniert es bei mir. Wenn Du perl hast, versuch mal

    Code:
    perl -ne "if(/\t$host\$/){s/\t$host\$//; print}" file
    
    Gruss, Xanti
     
  12. #11 Wolfgang, 21.09.2006
    Zuletzt bearbeitet: 21.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Welches sed benutzt du?
    Um möglichst kompatibel zu sein, kannst du auch [[:blank:]] einsetzen, das matcht auf Tab als auch auf Leerzeichen.
    Code:
    sed -ne "/[[:blank:]]$host$/{s/[[:blank:]].*$//p;q}" /var/tmp/ethers
    Das q beendet sed sofort nach Treffer. Verkürzt es bei langen eindeutigen Eingaben. ;)
    @Xanti
    perl kennt auch \b als Wortgrenze und \s matcht auf Tab und Space.
    Damit ist dem zweideutigen (Tab oder Space), was man nicht immer sieht beizukommen.
    Oder wenn perl , dann noch kürzer:
    Code:
    perl -anle "print \$F[0] if(/$host\$/)" /var/tmp/ethers
    Da ist doch Perl im Element.
    :-)
    Gruß Wolfgang
     
  13. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Yep, hab einfach ohne Nachzudenken den sed-Befehl in Perl umgesetzt. Deine Lösung ist natürlich eleganter. :)

    Gruss, Xanti
     
  14. #13 Wolfgang, 21.09.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    War mir schon klar, nur wollte ich Perl nicht so im Regen stehen lassen.

    :devil:

    Gruß Wolfgang
    PS Kennt dein sed (BSD-Version) [[:blank:]]?
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ja, das kennt mein sed.

    Gruss, Xanti
     
  17. Gayson

    Gayson Jungspund

    Dabei seit:
    12.08.2006
    Beiträge:
    10
    Zustimmungen:
    0
    Das mit dem Blank klappt, danke. STRG+V klappt leider nicht :(. Aber egal, ist ja jetzt gelöst.
    Nur eine Frage noch: Wie krieg ich die Ausgabe in eine Variable?
    Ein macadresse='sed ...' klappt nicht. Was muss ich tun?
     
Thema:

Mac-Adresse aus Datei herausfiltern

Die Seite wird geladen...

Mac-Adresse aus Datei herausfiltern - Ähnliche Themen

  1. systemd + Netzwerk + MAC-adresse

    systemd + Netzwerk + MAC-adresse: Hallo Habe mein archlinux jetzt erfolgrich auf systemd umgestellt läuft alles, Netzwerk per dhcpd, nur wo kann ich jetzt eine gefakte MAC...
  2. Sun QFE Problem mit MAC-Adressen

    Sun QFE Problem mit MAC-Adressen: Hallo zusammen! Ich habe ein kleines Problem mit meiner in einen normalen IBM xServer eingebauten Sun QFE (QuadFastEthernet) Karte: Die...
  3. DHCP-Server nur fuer bestimmte MAC-Adresse

    DHCP-Server nur fuer bestimmte MAC-Adresse: Hallo, Ich moechte einen dhcp-Server aufsetzten, welcher nur auf Rechner mit der richtigen MAC-Adresse hoeren soll. Diese Rechner moechte ich...
  4. MAC-Adresse ermitteln

    MAC-Adresse ermitteln: Hallo Zusammen, ich bin relativ unerfahren im Umgang mit Linux und muss für die Arbeit ein kleines Konsolentool schreiben, welches die...
  5. Alle MAC-Adressen mit Hostnamen im Netzwerk ermitteln

    Alle MAC-Adressen mit Hostnamen im Netzwerk ermitteln: Hallo, ist es irgendwie möglich in einem Netzwerk (Windows und Mac Rechner) die MAC-Adressen der Netzwerkkarten zu ermitteln. Zusätzlich dazu...