commit b4f646e6131f7de3851b5e22d7381694381f0cd3 Author: gsd Date: Mon Oct 14 23:34:24 2024 +0300 init diff --git a/pingtest.sh b/pingtest.sh new file mode 100644 index 0000000..1ee4dda --- /dev/null +++ b/pingtest.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +#===================================================================== +# pingtest.sh, v1.0.1 +# Created 2009 by Bennett Lee +# Released to public domain +# +# (1) Attempts to ping several hosts to test connectivity.  After +#    first successful ping, script exits. +# (2) If all pings fail, resets interface and retries all pings. +# (3) If all pings fail again after reset, then reboots pfSense. +# +# History +# 1.0.1  Added delay to ensure interface resets (thx ktims). +# 1.0.0  Initial release. +#===================================================================== + +#===================================================================== +# USER SETTINGS +# +# Set multiple ping targets separated by space.  Include numeric IPs +# (e.g., remote office, ISP gateway, etc.) for DNS issues which +# reboot will not correct. +ALLDEST="google.com yahoo.com 24.93.40.36 24.93.40.37" +# Interface to reset, usually your WAN +BOUNCE=em0 +# Log file +LOGFILE=/root/pingtest.log +#===================================================================== + +COUNT=1 +while [ $COUNT -le 2 ] +do + + for DEST in $ALLDEST + do + #echo `date +%Y%m%d.%H%M%S` "Pinging $DEST" >> $LOGFILE + ping -c1 $DEST >/dev/null 2>/dev/null + if [ $? -eq 0 ] + then + #echo `date +%Y%m%d.%H%M%S` "Ping $DEST OK." >> $LOGFILE + exit 0 + fi + done + + if [ $COUNT -le 1 ] + then + echo `date +%Y%m%d.%H%M%S` "All pings failed. Resetting interface $BOUNCE." >> $LOGFILE + /sbin/ifconfig $BOUNCE down + # Give interface time to reset before bringing back up + sleep 10 + /sbin/ifconfig $BOUNCE up + # Give WAN time to establish connection + sleep 60 + else + echo `date +%Y%m%d.%H%M%S` "All pings failed twice. Rebooting..." >> $LOGFILE + /sbin/shutdown -r now >> $LOGFILE + exit 1 + fi + + COUNT=`expr $COUNT + 1` +done