如果我在 Debian 中手动执行此脚本:
#!/bin/bash
/sbin/ifconfig wlan0 down
/sbin/ifconfig wlan0 up
sudo iwconfig wlan0 essid "WLAN_NETWORK"
sudo iwconfig wlan0 key myPassword
sudo dhclient wlan0
它运行良好。它重新启动了我的 wifi 适配器并重新连接,没有问题。但是,当我使用 cron 对其进行编程时,它什么也不做(当然需要管理员权限)。
有任何迹象表明发生了什么事吗?
答案1
您似乎在这个脚本中有一些“无用的使用sudo
”。也就是说,如果您可以成功运行此脚本:
/sbin/ifconfig wlan0 down
那么您可能已经是 root 了,因此您应该能够:
/sbin/iwconfig wlan0 essid "WLA_NETWORK"
无需使用sudo
。
有几种因素可能会阻止脚本以当前形式运行:
sudo
可以配置为需要有效的 tty(使用requiretty
配置指令)。如果此标志处于活动状态,您将无法使用sudo
viacron
。- 您使用的是 的完整限定路径,
ifconfig
但不是 的完整限定路径。如果通过 运行时iwconfig
此命令不可用,则它将不起作用。PATH
sudo
您可以采取以下措施来修复此问题:
- 删除使用
sudo
。可以通过 运行整个脚本,sudo
或者仅将其作为 运行root
。 - 用完全限定路径替换
iwconfig
和。dhclient
- 将脚本中的
stdout
和记录stderr
到文件中,以便检查输出。您的 crontab 条目将类似于* * * * * /path/to/your/script > /tmp/script.log 2>&1
。
如果您的脚本此时仍然有问题,则输出文件中记录的任何错误都会显示帮助指出解决方案。