最近 Raspberry Pi 三號機網路常常掛點 雖然之前有找到讓它重新開機的方法Linux在Wifi使用pppoe連線後,重開機不能連線上網 | 程式狂想筆記 但我沒採用這個方案 畢竟有時候需要確保有哪些程式正在執行 再重開機是比較好的
有問題電腦解決重新連線方法 最近看到Headless raspberryPi with eth0+USB issue Register 0x00000114 - Raspberry Pi Forums 這邊會 ping 自己的路由 失敗會重啟 Interface
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #!/bin/sh IP_FOR_TEST="192.168.1.1" PING_COUNT=1 PING="/bin/ping" IFUP="/sbin/ifup" IFDOWN="/sbin/ifdown --force" INTERFACE="eth0" FFLAG="/opt/check_lan/stuck.fflg" $PING -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/nullif [ $? -ge 1 ]then logger "$INTERFACE seems to be down, trying to bring it up..." if [ -e $FFLAG ] then logger "$INTERFACE is still down, REBOOT to recover ..." rm -f $FFLAG 2>/dev/null sudo reboot else touch $FFLAG logger $(sudo $IFDOWN $INTERFACE ) sleep 10 logger $(sudo $IFUP $INTERFACE ) fi else rm -f $FFLAG 2>/dev/null fi
但我不想重開機 之後找時間改寫
改成監控紀錄 log 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/sh IP_FOR_TEST="192.168.1.1" PING_COUNT=1 PING="/bin/ping" INTERFACE="eth0" $PING -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/nullif [ $? -ge 1 ]then logger -it check_interface "=============================" logger -it check_interface "$INTERFACE seems to be down, trying to bring it up..." logger -it check_interface "carrier:" cat /sys/class/net/eth0/carrier | logger -it check_interface logger -it check_interface "operstate:" cat /sys/class/net/eth0/operstate | logger -it check_interface logger -it check_interface "route -n" route -n 2>&1 | logger -it check_interface logger -it check_interface "ifconfig:" ifconfig 2>&1 | logger -it check_interface logger -it check_interface "ping:" ping -c4 192.168.1.1 | logger -it check_interface ping -c4 8.8.8.8 | logger -it check_interface logger -it check_interface "=============================" fi
紀錄 loglinux日志logger命令详解_飘过的春风-CSDN博客_linux logger Linux 如何將資料寫到 Syslog | Tsung’s Blog shell - Linux : how to redirect stdout & stderr to logger? - Unix & Linux Stack Exchange
相關 interface 資訊如何在 Linux Kernel 下偵測網路的連線狀態? wifi连接中operstate和carrier分别是什么作用?-CSDN论坛 在Linux上,如何檢測物理電纜是否已連接到網卡插槽 - Ubuntu問答 树莓派折腾日记 二:网络相关配置 | 冰棒实验室
監控電腦活著發送 DISCORD 通知 其他機都非常穩定 別台監控狀態
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/bin/bash PING="/bin/ping" PING_COUNT=1 IP=( 192.168.1.1 192.168.1.2 192.168.1.3 ) DSCORD_WEBHOOK="https://discordapp.com/api/webhooks/*" function sendDiscordNotice (){ local MSG=$2 local URL=$1 curl -H "Content-Type: application/json" \ -X POST \ -d "{\"username\": \"system\", \"content\": \"${MSG} \"}" $URL } for i in "${IP[@]} " do MSG="${i} 沒法 PING 到主機,請管理員查詢狀況" $PING -c $PING_COUNT $i > /dev/null 2> /dev/null if [ $? -ge 1 ]; then sendDiscordNotice "${DSCORD_WEBHOOK} " "${MSG} " fi done
這邊學到shell function 參數是用 $1 $2 參數最後外面加個"
預防參考帶進去有問題
Bash 程式設計教學與範例:function 自訂函數 - Office 指南
對 variable 使用 foeach
Loop through an array of strings in Bash? - Stack Overflow
番外 開機做發信動作 ubuntu server 開機自動發信通知(使用gmail) | pupuliao的部落格
決得這邊沒有考慮到網路的問題 但這個方法也滿有用的 先記錄
看到另類 ping 大法 剛好爬到不錯文章,想到之前有類似做這個,可以留著以後參考
为 ping 添加时间戳后台运行实时输出保存日志 | HelloDog 備份圖 为ping添加时间戳后台运行实时输出保存日志 - 知乎 備份圖