2013-07-30 6 views
8

Korzystam z poniższego kodu, aby uzyskać adres MAC eth0 w zmiennej do użycia w nazwie pliku, ale rzadko każdy działa . Nie jest tak, że NIGDY nie działa, jest po prostu nieprzewidywalny.Próbuję uzyskać adres MAC jako zmienną w systemie Linux, ale rzadko działa

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 

Teraz wydaje się działać mniej często w przypadku korzystania z linii ntpdate, ale niezależnie od tego, że jest całkowicie nieprzewidywalny. Ktoś ma jakiś pomysł, co mogę zrobić, żeby to działało lepiej? I skończyć z pliku jak

logfile--1375195808.bz2 

Nowe informacje

Mam konfiguracji skryptu do uruchomienia jako cron (crontab -e). Zauważam, że gdy działa jako cronjob, nie dostaje MAC, ale kiedy uruchomię go ręcznie ./runscript.bash, otrzyma MAC. Mam nadzieję, że ktoś wie, dlaczego to może być przyczyną.

Dzięki.

+0

ostrożnie z tym. możesz także przechwytywać adresy IPv6. powinieneś dalej filtrować, szukając 'HWaddr' –

+0

Kiedy to się nie powiedzie, co pokazuje" ifconfig eth0 "? – Barmar

+0

Pokazywanie plików ifconfig wygląda dobrze, pokazuje adres MAC. Właśnie zauważyłem coś nowego, dodałem to do głównego postu. – McB

Odpowiedz

31

Spróbuj łatwiejszy sposób, aby dostać się adres mac niż poprzez ifconfig, tj

cat /sys/class/net/eth0/address 

Przetestowałem go w powłoce (nie przez skrypt) i działa jak czar:

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

EDIT do drugiego problemu

w was cron skrypt, dodać pełną ścieżkę plików binarnych jesteś korzystających (tj/sbin/ifconfig) lub użyć moja metoda jak wyżej :)

Powiązane problemy