crontab @reboot 中出现错误

crontab @reboot 中出现错误

每次重启系统时我都想更改我的 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 只是一个管理网络配置的守护进程。

相关内容