在ppp移植成功后,有時(shí)會(huì)出現(xiàn)ppp掉線等情況。這篇文章寫了一個(gè)自動(dòng)檢測(cè)連接網(wǎng)絡(luò)的解決方法。
創(chuàng)建一個(gè)shell腳本,在里面添加一下內(nèi)容。(記得給操作權(quán)限)
#!/bin/sh
//根據(jù)你自己的shell類型來(lái)選擇。
while true
//先做一個(gè)死循環(huán)
do
ping -c 3 -I ppp0 172.16.1.11 >/dev/null
//指定一個(gè)出口去ping服務(wù)器的局域網(wǎng)ip,將結(jié)果重定向到/dev/null里。
//-c 3 是指ping執(zhí)行3次后結(jié)束。
//-w 3 是指ping執(zhí)行3秒后結(jié)束。
if [ $? -eq 0 ];then
//[]的兩邊都要有空格隔開
//當(dāng)ping成功了,它的返回值為0,什么也不用干。說(shuō)明網(wǎng)絡(luò)暢通。
//$?是用來(lái)獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài)。
echo "ppp0 is ready"
sleep 30
//為了防止過(guò)度的占用cpu資源,選擇延遲一段時(shí)間。
else
//當(dāng)不成功說(shuō)明這個(gè)網(wǎng)絡(luò)或出口有問(wèn)題。
echo "ppp0 is connecting"
pppd call connectvpn
//重新?lián)芴?hào),刷新這個(gè)出口。
ifconfig
sleep 30
fi
sleep 30
done
程序中加入了延時(shí),是為了減少檢測(cè)所占用的cpu資源。本腳本是一分鐘檢測(cè)一次網(wǎng)絡(luò)狀況。
當(dāng)執(zhí)行shell時(shí)出現(xiàn)syntax error: unexpected “then” (expecting “done”)報(bào)錯(cuò)是是因?yàn)榫幋a格式不對(duì),重新手打一遍就應(yīng)該好了。
ps:linux檢測(cè)程序是否掛掉并自動(dòng)重新運(yùn)行的腳本
編寫一個(gè)腳本替代應(yīng)用程序的運(yùn)行,也就是通過(guò)啟動(dòng)腳本來(lái)啟動(dòng)程序,并監(jiān)測(cè)程序是否掛掉,若掛掉則重新運(yùn)行
#!/bin/sh
while true
do
ps -ef | grep "$PWD/app/auto_run.sh" | grep -v "grep"
if [ "$?" -eq 1 ]
then
/home/root/app/auto_run.sh #啟動(dòng)應(yīng)用,修改成自己的啟動(dòng)應(yīng)用腳本或命令
echo "process has been restarted!"
else
echo "process already started!"
fi
sleep 10
done
總結(jié)
以上所述是小編給大家介紹的shell腳本自動(dòng)檢測(cè)網(wǎng)絡(luò)掉線和自動(dòng)重連,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
您可能感興趣的文章:- PowerShell腳本實(shí)現(xiàn)檢測(cè)網(wǎng)絡(luò)內(nèi)主機(jī)類型
- Shell腳本實(shí)現(xiàn)檢測(cè)某ip網(wǎng)絡(luò)暢通情況(含短信報(bào)警功能)