在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编程时,它什么都不做(当然是用pipe理员权限)。

任何暗示正在发生的事情?

你在这个脚本中似乎有一些“无用的sudo ”。 也就是说,如果你能成功运行这个:

 /sbin/ifconfig wlan0 down 

那么你可能已经是root了,所以你应该能够:

 /sbin/iwconfig wlan0 essid "WLA_NETWORK" 

而不使用sudo

有几件事情可能会阻止你的脚本以当前的forms运行:

  • 可以将sudoconfiguration为需要有效的tty(使用requirettyconfiguration指令)。 如果此标志处于活动状态,则不能通过cron使用sudo
  • 您正在使用ifconfig完全限定path,而不是iwconfig 。 如果这个命令不在通过sudo运行的可用PATH ,那么它不会起作用。

以下是您可以解决的问题:

  • 删除使用sudo 。 要么通过sudo运行整个脚本,要么以root身份运行。
  • iwconfigdhclientreplace为完全限定的path。
  • stdoutstderr从脚本logging到文件中,以便检查输出。 你的crontab条目看起来像* * * * * /path/to/your/script > /tmp/script.log 2>&1

如果您的脚本在这一点上仍然存在问题,则输出文件中logging的任何错误都将显示帮助指向解决scheme。