每次重启系统时我都想更改我的 MAC 地址。所以我写了一个脚本,如下所示。
#!/bin/bash -x
echo "Date $(date)"
systemctl stop NetworkManager.service
ip addr
macchanger -r wlx9cefd5fe0d41
systemctl start NetworkManager.service
当我在终端中运行脚本时,它成功更改了 MAC 地址,但是当我使用 crontab 执行此操作时,出现以下错误:
[ERROR] Could not change MAC: interface up or insufficient permissions: Device or resource busy.
我以 root 身份运行 crontab,我附加的日志显示接口已关闭。有人能帮我吗?如果有更好的方法,我愿意接受。
这是我的 crontab 行:
@reboot bash -x /home/user/changeMac.sh >> /home/user/testlog.txt 2>&1
日志文件:
++ date
+ echo 'Date Wed Aug 22 21:27:32 PDT 2018'
Date Wed Aug 22 21:27:32 PDT 2018
+ systemctl stop NetworkManager.service
+ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
3: wlx9cefd5fe0d41: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
+ macchanger -r wlx9cefd5fe0d41
[ERROR] Could not change MAC: interface up or insufficient permissions: Device or resource busy
Current MAC: (unknown)
Permanent MAC: (unknown)
+ systemctl start NetworkManager.service
答案1
日志并没有说接口已关闭,而是抱怨接口已启动!为了正确关闭它,请添加
ip link set wlx9cefd5fe0d41 down
添加到脚本中的该行之前macchanger
。要稍后再次调用它,请使用等效的命令:
ip link set wlx9cefd5fe0d41 up
您可能已经想到,ip
应该使用 NetworkManager 来操作网络设备。NetworkManager 只是一个管理网络配置的守护进程。