Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # This file checks the status of the internet connection.
- # When connection goes down, it will log and attempt to recover the connection.
- #Predefined variables
- LOGFILE='/my-company/logs/sanity.log'
- GOOD_THRESHOLD=100
- BAD_THRESHOLD=10
- SLEEP_TIME=60
- IP_ADDRESS='192.168.111.254'
- PID_FILE='/var/run/sanity.pid'
- GOODCOUNTER=0
- BADCOUNTER=0
- TMPFILE='/tmp/config.deploy'
- CONFIGFILE='/my-company/scripts/config/config.csv'
- USB_MODEM='/my-company/scripts/usbmodem.py'
- PCI_MODEM='/my-company/scripts/pcimodem.py'
- KICK_WATCHDOG='/my-company/scripts/kick_watchdog.sh'
- echo $$ > $PID_FILE
- IFS=,;CONFIG_VALUES=($(grep $HOSTNAME $CONFIGFILE));unset IFS
- IP_ADDRESS=${CONFIG_VALUES[5]} #sanity_host
- BAD_THRESHOLD=${CONFIG_VALUES[6]} #sanity_cycles
- SLEEP_TIME=${CONFIG_VALUES[7]} #sanity_sleep
- LOGFILE=${CONFIG_VALUES[14]} #system_log_file
- let REPAIR_THRESHOLD="(($BAD_THRESHOLD)/2)"
- if [ $REPAIR_THRESHOLD -eq 0 ]; then
- let REPAIR_THRESHOLD="(($BAD_THRESHOLD)+1)"
- fi
- echo "$(date +'%F %X %z'): Service SANITY started with parameters:$IP_ADDRESS $BAD_THRESHOLD $SLEEP_TIME $LOGFILE $REPAIR_THRESHOLD" >> $LOGFILE
- # Display status of the USB modem
- function usb_status {
- FILENAME="/my-company/scripts/config_files/$HOSTNAME.usbmodem"
- if [ -f "$FILENAME" ]; then
- SERIALPORT=$(head -1 $FILENAME)
- else
- echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
- return 0
- fi
- echo "$(date +'%F %X %z'): USB modem status request initiated." >> $LOGFILE
- $USB_MODEM -p $SERIALPORT -s
- }
- # Display status of the PCI modem
- function pci_status {
- $PCI_MODEM -s
- }
- function pcimodem_up {
- echo "$(date +'%F %X %z'): PCi modem reset initiated." >> $LOGFILE
- $PCI_MODEM -u
- }
- # Cause a USB modem to disconnect then reconnect
- function usb_reset {
- FILENAME="/my-company/scripts/config_files/$HOSTNAME.usbmodem"
- if [ -f "$FILENAME" ]; then
- SERIALPORT=$(head -1 $FILENAME)
- else
- echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
- return 0
- fi
- echo "$(date +'%F %X %z'): USB modem reset initiated." >> $LOGFILE
- $USB_MODEM -p $SERIALPORT -r
- }
- # Cause the reset box to power cycle the base station
- function resetbox_reset {
- FILENAME="/my-company/scripts/config_files/$HOSTNAME.resetbox"
- if [ -f "$FILENAME" ]; then
- SERIALPORT=$(head -1 $FILENAME)
- else
- echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
- return 0
- fi
- PATHTOSCRIPT='/my-company/scripts/reset_box_interface.py'
- echo "$(date +'%F %X %z'): Reset box power cycle initiated." >> $LOGFILE
- sync
- $PATHTOSCRIPT -c $SERIALPORT -r
- }
- # ping 2 times, then analyse the result and act appropriately
- # to maint the link or correct any of the issues
- while true; do
- sleep $SLEEP_TIME
- # Check the status of the link
- if ping -c 1 $IP_ADDRESS >/dev/null; then
- let $((GOODCOUNTER++))
- BADCOUNTER=0
- else
- GOODCOUNTER=0
- let $((BADCOUNTER++))
- # Do something about a bad status
- echo "$(date +'%F %X %z'): ERROR: $BADCOUNTER out of $BAD_THRESHOLD bad pings in a row" >> $LOGFILE
- #usb_status >> $LOGFILE
- pci_status >> $LOGFILE
- fi
- # Print status for debug purposes
- echo "$(date +'%F %X %z'): Good pings: $GOODCOUNTER Bad pings: $BADCOUNTER" >> $LOGFILE
- # Do something about extended good status
- if [ $GOODCOUNTER -eq $GOOD_THRESHOLD ]; then
- echo "$(date +'%F %X %z'): INFO: Completed $GOOD_THRESHOLD good consecutive pings" >> $LOGFILE
- GOODCOUNTER=0
- fi
- # Try repairing the link
- if [ $BADCOUNTER -eq $REPAIR_THRESHOLD ]; then
- usb_reset >> $LOGFILE
- sudo ifdown eth0
- sudo ifdown usb0
- sudo $PCI_MODEM -d >> $LOGFILE
- sudo poff cloudvpn
- echo "$(date +'%F %X %z'): WARNING: Disabling network devices" >> $LOGFILE
- sleep 5
- echo "$(date +'%F %X %z'): WARNING: Enabling network devices" >> $LOGFILE
- sudo ifup eth0
- sudo ifup usb0
- sudo service pcimodem start
- sudo pon cloudvpn
- fi
- # Do something about extended link outage
- if [ $BADCOUNTER -eq $BAD_THRESHOLD ]; then
- echo "$(date +'%F %X %z'): ERROR: REBOOTING $BADCOUNTER out of $BAD_THRESHOLD bad pings in a row" >> $LOGFILE
- usb_status >> $LOGFILE
- pci_status >> $LOGFILE
- ifconfig >> $LOGFILE
- route -n >> $LOGFILE
- $PCI_MODEM -d >> $LOGFILE
- $KICK_WATCHDOG
- fi
- # This condition should not happen, but just to be MECE
- if [ $BADCOUNTER -gt $BAD_THRESHOLD ]; then
- failCounter=$(($BADCOUNTER-$BAD_THRESHOLD))
- echo "$(date +'%F %X %z'): ERROR: REBOOTING failed $failCounter times, keep trying." >> $LOGFILE
- usb_status >> $LOGFILE
- pci_status >> $LOGFILE
- ifconfig >> $LOGFILE
- route -n >> $LOGFILE
- $PCI_MODEM -d >> $LOGFILE
- $KICK_WATCHDOG
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement