title: 樹莓派保持網(wǎng)絡(luò)連接shell腳本
date: 2017-02-13 09:20:06
tags: raspberry,樹莓派,shell,network
樹莓派保持網(wǎng)絡(luò)連接shell腳本
故事背景
樹莓派3b現(xiàn)在有了板載無線網(wǎng)卡,可以很方便的連接到wifi。但是無線路由器不能保證永遠(yuǎn)正常工作,由于各種原因會重啟路由。這個時候,raspberry3b就會有一定概率斷開網(wǎng)絡(luò)連接。系統(tǒng)級功能比如像手機一樣有網(wǎng)就連,斷網(wǎng)后自動重連的功能目前沒有能力實現(xiàn)。所以就想搞一個腳本檢查網(wǎng)絡(luò)連接狀態(tài),如果沒有網(wǎng)絡(luò)重啟一下。
shell腳本
#! /bin/bash
#檢測網(wǎng)絡(luò)連接
log=/root/network.log
#判斷輸出日志文件是否存在
if [ ! -f ${log} ]
then
touch ${log}
fi
ping -c 1 192.168.1.1 > /dev/null 2>&1
if [ $? -eq 0 ];then
#echo `date` 檢測網(wǎng)絡(luò)正常 >> ${log}
else
echo `date` 檢測網(wǎng)絡(luò)異常 >> ${log}
reboot
fi
這個腳本基本上是ping路由地址(192.168.1.1)來判斷無線的連接狀態(tài),$?是上一條命令執(zhí)行的return值。ping通返回0,ping不通返回不是0。當(dāng)ping不通的時候?qū)懴氯罩荆缓笾貑⑾到y(tǒng)(為什么不重啟網(wǎng)絡(luò)?我是真的不在家的時間有點長,所以沒有膽量嘗試)。
定時運行
起初想用nodejs腳本定時運行,自己都覺得小題大作了。轉(zhuǎn)而尋找用shell腳本實現(xiàn)的思路。查資料后發(fā)現(xiàn)linux系統(tǒng)本身有一個cron服務(wù)(俗稱定時任務(wù))。
修改/etc/crontab文件,添加一行
*/5 * * * * root bash /root/network.sh
當(dāng)系統(tǒng)時間的分鐘整除5的時候就會以root身份調(diào)用一個后面的bash /root/network.sh命令。