我正在使用以下代码将eth0的MAC地址转换为用于文件名的变量,但很少有人都可以使用。不是它永远不会工作,它只是不可预测。
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
现在,如果我使用ntpdate行似乎不那么频繁,但无论如何,它完全不可预测。任何人都知道我能做些什么才能使这项工作变得更好?我最终得到了像
这样的文件名logfile--1375195808.bz2
新信息
我已经将脚本设置为cronjob(crontab -e)运行。我注意到当它作为cronjob运行时,它不会获得MAC,但是当我手动运行时./runscript.bash它确实获得了MAC。希望有人知道为什么会造成这种情况。
感谢。
答案 0 :(得分:32)
尝试一种比通过ifconfig更简单的方法来获取mac地址,即
cat /sys/class/net/eth0/address
我在shell中测试过它(不是通过脚本)并且像魅力一样:
TEST=`cat /sys/class/net/eth0/address`
touch /tmp/blabla-$TEST
为您的第二个问题编辑
在你的cron脚本中,添加你正在使用的二进制文件的完整路径(即/ sbin / ifconfig),或者使用我上面的方法:)
答案 1 :(得分:5)
ip addr | grep link/ether | awk '{print $2}'