2013-07-30 7 views
8

Sto usando il seguente codice per ottenere l'indirizzo MAC di eth0 in una variabile da utilizzare in un nome file, ma raramente ogni lavoro . Non è che non funzioni MAI, è solo imprevedibile.Sto cercando di ottenere l'indirizzo MAC come variabile in Linux, ma funziona raramente

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 

Ora, sembra funzionare meno frequentemente se io uso la linea ntpdate, ma a prescindere, è del tutto imprevedibile. Qualcuno ha qualche idea su cosa potrei fare per migliorare questo lavoro? Io alla fine con un nome di file come

logfile--1375195808.bz2 

Nuove info

Ho la messa a punto di script per l'esecuzione come un cronjob (crontab -e). Ho notato che quando viene eseguito come un cronjob, non ottiene il MAC, ma quando lo eseguo manualmente ./runscript.bash ottiene il MAC. Spero che qualcuno sappia perché questo potrebbe causarlo.

Grazie.

+0

attento a quello. potresti anche acquisire indirizzi IPv6. dovresti filtrare ulteriormente cercando 'HWaddr' –

+0

Quando fallisce, cosa mostra' ifconfig eth0'? – Barmar

+0

ifconfig shows sembra buono, mostra l'indirizzo MAC. Ho appena notato qualcosa di nuovo, l'ho aggiunto al post principale. – McB

risposta

31

Prova un metodo più semplice per ottenere l'indirizzo MAC che attraverso ifconfig, cioè

cat /sys/class/net/eth0/address 

ho provato in guscio (non attraverso lo script) e funziona come un fascino:

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

EDIT per il tuo secondo problema

nello script di cron, aggiungere il percorso completo dei file binari in uso (es./Sbin/ifconfig) oppure utilizzare il mio metodo come sopra :)

5
ip addr | grep link/ether | awk '{print $2}' 
Problemi correlati