我非常低的shell腳本..我怎樣才能做一個shell腳本,知道我連接了在Ubuntu
我需要檢查一個cron(這個沒問題)如果我的連接向上。如果不是,我想調用一些腳本來重新連接。
我正在考慮使用grep和ping到某個站點(或ip),然後檢查返回的字符串。
然後打電話給我的命令:
sudo pppd call speedtch
我需要一個線索的感謝!或者有更好的方法來做到這一點?
由於我的電話需要sudo,有沒有密碼輸入的批處理方式來調用它?
我非常低的shell腳本..我怎樣才能做一個shell腳本,知道我連接了在Ubuntu
我需要檢查一個cron(這個沒問題)如果我的連接向上。如果不是,我想調用一些腳本來重新連接。
我正在考慮使用grep和ping到某個站點(或ip),然後檢查返回的字符串。
然後打電話給我的命令:
sudo pppd call speedtch
我需要一個線索的感謝!或者有更好的方法來做到這一點?
由於我的電話需要sudo,有沒有密碼輸入的批處理方式來調用它?
查驗效果很好,使用此命令行:
if ping -W 5 -c 1 google.com >/dev/null; then
echo "Internet is up."
fi
這使用以下命令行參數平:
至於你的sudo問題,你可以在sudoers文件中配置它。
在使用sudo的下面一行:
fromuser ALL=(root) NOPASSWD: /usr/bin/mycommand
你需要替換以下字符串:
使用此c onfiguration用戶「fromuser」將始終能夠在不輸入密碼的情況下執行/ usr/bin/mycommand。出於安全原因,您當然要小心。
一個更快的(和被動的方式),如果你是從直接連接到互聯網的測試中,是檢查是否默認路由是存在:
netstat -rn | grep '^default' && echo connection is up || echo connection is down
如果你想檢查的錯誤級別的腳本:
#!/bin/sh netstat -rn | grep '^default' connected=$? if [ ! -z $connect ]; then echo connected; fi
,我個人做的另一件事,是等待的連接...
function wait_for_router() { el=1 while [ -z $el ]; do sleep 1 ping -c 1 $1 > /dev/null 2>&1 el=$? done }
如果您在另一個腳本此功能,您可以簡單地這樣做:
#!/bin/sh echo Waiting for connection... wait_for_router 192.168.1.1 echo We have a connection... lets party
你能解釋一下我這個? ping -W 5 -c 1 google.com>/dev/null 謝謝! – apelliciari 2009-07-22 13:00:35