我试图将MAC地址作为Linux中的变量,但它很少有效

时间:2013-07-30 14:54:32

标签: bash angstrom-linux

我正在使用以下代码将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。希望有人知道为什么会造成这种情况。

感谢。

2 个答案:

答案 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}'