Networking
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 對其進行程式時(當然具有管理員權限),它什麼也不做。
任何暗示發生了什麼?
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
.如果此時您的腳本仍然存在問題,則輸出文件中記錄的任何錯誤都會顯示幫助指向解決方案的方法。