2013-07-30 6 views
8

Ich verwende den folgenden Code, um die MAC-Adresse von eth0 in eine Variable für die Verwendung in einem Dateinamen, aber es funktioniert selten . Es ist nicht so, dass es NIE funktioniert, es ist einfach unvorhersehbar.Ich versuche, die MAC-Adresse als eine Variable in Linux, aber es funktioniert selten

ntpdate -b 0.centos.pool.ntp.org 
DATE=$(date +%s) 
MAC=$(ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | sed 's/://g') 
cp logfile logfilecp-$MAC-$DATE 

Nun scheint es zu funktionieren weniger häufig, wenn ich die ntpdate Linie verwenden, aber egal, es ist völlig unberechenbar. Hat jemand eine Idee, was ich tun könnte, um diese Arbeit besser zu machen? Ich am Ende mit einem Dateinamen wie

logfile--1375195808.bz2 

Neue Informationen

ich das Drehbuch Setup haben als cronjob (crontab -e) auszuführen. Ich merke, dass es, wenn es als Cronjob läuft, nicht den MAC bekommt, aber wenn ich es manuell ausführe ./runscript.bash erhält es den MAC. Hoffentlich weiß jemand, warum dies das verursacht.

Danke.

+0

vorsichtig damit. Sie können auch IPv6-Adressen erfassen. Sie sollten weiter filtern, indem Sie nach 'HWaddr' suchen. –

+0

Wenn es fehlschlägt, was zeigt' ifconfig eth0'? – Barmar

+0

ifconfig zeigt scheint gut, es zeigt die MAC-Adresse. Ich habe gerade etwas Neues bemerkt, habe es dem Hauptpost hinzugefügt. – McB

Antwort

31

Versuchen Sie, eine einfachere Methode, um Sie MAC-Adresse zu erhalten als durch ifconfig, dh

cat /sys/class/net/eth0/address 

Ich habe es in der Schale getestet (nicht durch Skript) und wirkt wie ein Zauber:

TEST=`cat /sys/class/net/eth0/address` 
touch /tmp/blabla-$TEST 

BEARBEITEN Sie für Ihr zweites Problem

in Sie Cron-Skript, fügen Sie den vollständigen Pfad der Binärdateien, die Sie verwenden (dh/sbin/ifconfig), oder verwenden Sie meine Methode wie oben :)

5
ip addr | grep link/ether | awk '{print $2}' 
Verwandte Themen