我想弄清楚如何通过脚本在设定的计时器上自动更改我的 MAC,或者如何通过 shell 完全更改 MAC。此路由器是 Netgear WNDR3700v4,因此它使用 Atheros 芯片。
我对 Linux 一无所知,但我曾通过 Windows 命令提示符完成过此操作,但仅此而已。
我进行了一些 Google 搜索,想看看是否有人尝试过通过 SSH 更改 MAC 地址,但没有看到任何让我有足够信心去尝试而不用担心路由器损坏的东西。
答案1
您的问题分为两部分:如何更改 MAC 地址,以及如何对某个过程进行计时。
更改 MAC 地址
鉴于您无法安装类似的实用程序macchanger
,因此您必须手动执行此操作。
找出你的网络接口名称。在许多情况下,这是
eth0
。一定要找到你真正想要更改的接口的名称(WAN 或 LAN、VLAN...)。在这个例子中,我将使用eth0
检查您当前的 MAC 地址
ip link show eth0
。它可能显示类似link/ether 00:11:22:33:44:55
关闭您的接口:
ip link set dev eth0 down
。这是此解决方案的一大缺点,因为它会在此过程中破坏整个网络。确保您确实希望发生这种情况。设置新的 MAC 地址:
ip link set dev eth0 address AA:BB:CC:DD:EE:FF
再次打开你的界面:
ip link set dev eth0 up
编写脚本
在脚本中,这可能看起来像这样:
#!/bin/bash
IF=eth0
# Create a Random MAC, inspired by http://superuser.com/a/218372/475723
# MAC might not be valid since it's completely random. Use the linked answer to add a prefix like 00:60:2F
hexchars="0123456789ABCDEF"
MAC=$(for i in {1..12} ; do echo -n ${hexchars:$(( $RANDOM % 16 )):1} ; done | sed -e 's/\(..\)/\1:/g;s/:$//')
ip link set dev $IF down
ip link set dev $IF address $MAC
ip link set dev $IF up
将此脚本保存到合适的位置(我们假设/root/mac.sh
),并使其可由执行chmod +x /root/mac.sh
。
您可以通过执行来测试您的脚本/root/mac.sh
。
通过 cron 定时运行进程
您cron
可以使进程定期运行,例如每天一次。
通过编辑你的 cron 文件
crontab -e
插入一行提供必要的信息:何时和什么。例如
0 1 * * * /root/mac.sh
。这将在每天、每月、每年的 01:00 执行命令。请查看 cron 帮助页面以获取有关如何将其设置为不同间隔的信息。
请务必以 root 身份编辑 crontab 文件。