8

我正在使用以下代码将 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。希望有人知道为什么这可能会导致它。

谢谢。

4

2 回答 2

32

尝试一种比通过 ifconfig 更简单的方法来获取您的 mac 地址,即

cat /sys/class/net/eth0/address

我已经在 shell 中测试了它(不是通过脚本)并且像魅力一样工作:

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

编辑你的第二个问题

在你的cron脚本中,添加你正在使用的二进制文件的完整路径(即/sbin/ifconfig),或者使用我上面的方法:)

于 2013-07-30T15:57:14.820 回答
5
 ip addr | grep link/ether | awk '{print $2}'
于 2016-01-28T10:33:50.077 回答