我正在尝试找出一种方法来调用 DD-WRT v24SP2 中“setup”菜单下的“mac clone”命令。我可以在 GUI 中执行此操作(当然),但我想将其放在脚本中,以便我可以按 cron 进行随机化。
也许我最好解释一下我的困境?我想要创建一个可以运行的脚本,它将随机设置路由器的 MAC 地址以获取新的 IP 地址。我尝试了许多不同的脚本,但似乎没有一个适用于我的路由器型号(Buffalo WZR-HP-G300NH)。放弃脚本后,我决定尝试使用 GUI 中的内置“MAC 克隆”功能;它非常有效。不幸的是,我无法精确地定时 GUI,也无法让它从 GUI 中随机选择 MAC。
以下是我必须将 MAC 设置为随机值的步骤:
MAC=`(date; cat /proc/interrupts) | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'`
echo "00:${MAC}"
回显的值是随机生成的 MAC 地址(它总是以 00 开头,我知道这不好。)。
所以(语法不好),我的问题是:如何使用上述脚本调用用于克隆 MAC 地址的内置函数?
提前致谢!
答案1
我认为您正在寻找一些命令行选项......如下所示:
mac_clone_enable=1
1 表示开启 MAC 克隆,0 表示关闭 MAC 克隆
wan_hwaddr=00:AA:BB:CC:DD:EE
def_hwaddr=00:AA:BB:CC:DD:EE
您想要的随机 MAC 地址同时出现在两者中...我不确定有什么区别,但在我的配置中,它们是相同的。
答案2
这是我的完整自定义脚本,它看起来运行良好:
MAC=`(date; cat /proc/interrupts) | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'`
nvram set mac_clone_enable=1
nvram set wan_hwaddr="00:${MAC}"
nvram set def_hwaddr="00:${MAC}"
nvram commit
echo "00:${MAC}"
/bin/sleep 90
/sbin/reboot
通过 cron 调用它(在管理 --> 管理中),如下所示:
0 0 * * 1,5 root /bin/sh /tmp/custom.sh
确保在 GUI 中保存了 cronjob 后,检查它是否确实在文件系统中配置:
cat /etc/cron.d/cron_jobs
希望这对某些人有帮助。感谢随机 MAC 地址代码。