shell 脚本中的 ifconfig 问题(使用 cron)

shell 脚本中的 ifconfig 问题(使用 cron)

如果我在 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配置指令)。如果此标志处于活动状态,您将无法使用sudovia cron
  • 您使用的是 的完整限定路径,ifconfig但不是 的完整限定路径。如果通过 运行时iwconfig此命令不可用,则它将不起作用。PATHsudo

您可以采取以下措施来修复此问题:

  • 删除使用sudo。可以通过 运行整个脚本,sudo或者仅将其作为 运行root
  • 用完全限定路径替换iwconfig和。dhclient
  • 将脚本中的stdout和记录stderr到文件中,以便检查输出。您的 crontab 条目将类似于* * * * * /path/to/your/script > /tmp/script.log 2>&1

如果您的脚本此时仍然有问题,则输出文件中记录的任何错误都会显示帮助指出解决方案。

相关内容