Networking

shell 腳本中的 ifconfig 問題(使用 cron)

  • July 30, 2013

如果我在 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 對其進行程式時(當然具有管理員權限),它什麼也不做。

任何暗示發生了什麼?

sudo您在此腳本中似乎有一些“無用的使用”。也就是說,如果您可以成功執行它:

/sbin/ifconfig wlan0 down

那麼你可能已經是 root 了,所以你應該能夠:

/sbin/iwconfig wlan0 essid "WLA_NETWORK"

不使用sudo.

有幾件事可能會阻止目前形式的腳本執行:

  • sudo可以配置為需要一個有效的 tty(使用requiretty配置指令)。如果此標誌處於活動狀態,您將無法使用sudovia cron
  • 您正在使用完全限定的路徑,ifconfig但不是iwconfig. PATH如果通過 執行時此命令不可用sudo,則它將無法正常工作。

您可以採取以下措施來修復它:

  • 刪除使用sudo. 通過執行整個腳本sudo或將其作為root.
  • 用完全限定的路徑替換iwconfig和。dhclient
  • 記錄stdoutstderr從腳本到文件,以便您可以檢查輸出。您的 crontab 條目看起來像* * * * * /path/to/your/script > /tmp/script.log 2>&1.

如果此時您的腳本仍然存在問題,則輸出文件中記錄的任何錯誤都會顯示幫助指向解決方案的方法。

引用自:https://serverfault.com/questions/527382