daily pastebin goal
73%
SHARE
TWEET

Untitled

a guest Nov 23rd, 2015 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. # This file checks the status of the internet connection.
  3. # When connection goes down, it will log and attempt to recover the connection.
  4.  
  5. #Predefined variables
  6. LOGFILE='/my-company/logs/sanity.log'
  7. GOOD_THRESHOLD=100
  8. BAD_THRESHOLD=10
  9. SLEEP_TIME=60
  10. IP_ADDRESS='192.168.111.254'
  11. PID_FILE='/var/run/sanity.pid'
  12. GOODCOUNTER=0
  13. BADCOUNTER=0
  14. TMPFILE='/tmp/config.deploy'
  15. CONFIGFILE='/my-company/scripts/config/config.csv'
  16. USB_MODEM='/my-company/scripts/usbmodem.py'
  17. PCI_MODEM='/my-company/scripts/pcimodem.py'
  18. KICK_WATCHDOG='/my-company/scripts/kick_watchdog.sh'
  19. echo $$ > $PID_FILE
  20. IFS=,;CONFIG_VALUES=($(grep $HOSTNAME $CONFIGFILE));unset IFS
  21. IP_ADDRESS=${CONFIG_VALUES[5]} #sanity_host
  22. BAD_THRESHOLD=${CONFIG_VALUES[6]} #sanity_cycles
  23. SLEEP_TIME=${CONFIG_VALUES[7]} #sanity_sleep
  24. LOGFILE=${CONFIG_VALUES[14]} #system_log_file
  25. let REPAIR_THRESHOLD="(($BAD_THRESHOLD)/2)"
  26. if [ $REPAIR_THRESHOLD -eq 0 ]; then
  27.      let REPAIR_THRESHOLD="(($BAD_THRESHOLD)+1)"
  28. fi
  29.  
  30. echo "$(date +'%F %X %z'): Service SANITY started with parameters:$IP_ADDRESS $BAD_THRESHOLD $SLEEP_TIME $LOGFILE $REPAIR_THRESHOLD" >> $LOGFILE
  31.  
  32.  
  33. # Display status of the USB modem
  34. function usb_status {
  35. FILENAME="/my-company/scripts/config_files/$HOSTNAME.usbmodem"
  36.  
  37. if [ -f "$FILENAME" ]; then
  38.     SERIALPORT=$(head -1 $FILENAME)
  39. else
  40.     echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
  41.     return 0
  42. fi
  43.  
  44. echo "$(date +'%F %X %z'): USB modem status request initiated." >> $LOGFILE
  45. $USB_MODEM -p $SERIALPORT -s
  46. }
  47.  
  48. # Display status of the PCI modem
  49. function pci_status {
  50.     $PCI_MODEM -s
  51. }
  52.  
  53. function pcimodem_up {
  54.     echo "$(date +'%F %X %z'): PCi modem reset initiated." >> $LOGFILE
  55.     $PCI_MODEM -u
  56. }
  57.  
  58. # Cause a USB modem to disconnect then reconnect
  59. function usb_reset {
  60. FILENAME="/my-company/scripts/config_files/$HOSTNAME.usbmodem"
  61.  
  62. if [ -f "$FILENAME" ]; then
  63.     SERIALPORT=$(head -1 $FILENAME)
  64. else
  65.     echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
  66.     return 0
  67. fi
  68.  
  69. echo "$(date +'%F %X %z'): USB modem reset initiated." >> $LOGFILE
  70. $USB_MODEM -p $SERIALPORT -r
  71. }
  72.  
  73. # Cause the reset box to power cycle the base station
  74. function resetbox_reset {
  75. FILENAME="/my-company/scripts/config_files/$HOSTNAME.resetbox"
  76.  
  77. if [ -f "$FILENAME" ]; then
  78.     SERIALPORT=$(head -1 $FILENAME)
  79. else
  80.     echo "$(date +'%F %X %z'): ERROR: $FILENAME cannot be found." >> $LOGFILE
  81.     return 0
  82. fi
  83.  
  84. PATHTOSCRIPT='/my-company/scripts/reset_box_interface.py'
  85. echo "$(date +'%F %X %z'): Reset box power cycle initiated." >> $LOGFILE
  86. sync
  87. $PATHTOSCRIPT -c $SERIALPORT -r
  88. }
  89.  
  90.  
  91. # ping 2 times, then analyse the result and act appropriately
  92. # to maint the link or correct any of the issues
  93. while true; do
  94.     sleep $SLEEP_TIME
  95.     # Check the status of the link
  96.     if ping -c 1 $IP_ADDRESS >/dev/null; then
  97.          let $((GOODCOUNTER++))
  98.          BADCOUNTER=0
  99.     else
  100.          GOODCOUNTER=0
  101.          let $((BADCOUNTER++))
  102.          # Do something about a bad status
  103.          echo "$(date +'%F %X %z'): ERROR: $BADCOUNTER out of $BAD_THRESHOLD bad pings in a row" >> $LOGFILE
  104.          #usb_status >> $LOGFILE
  105.          pci_status >> $LOGFILE
  106.     fi
  107.  
  108.     # Print status for debug purposes
  109.     echo "$(date +'%F %X %z'):  Good pings: $GOODCOUNTER    Bad pings: $BADCOUNTER" >> $LOGFILE
  110.  
  111.     # Do something about extended good status
  112.     if [ $GOODCOUNTER -eq $GOOD_THRESHOLD ]; then
  113.          echo "$(date +'%F %X %z'): INFO: Completed $GOOD_THRESHOLD good consecutive pings" >> $LOGFILE
  114.          GOODCOUNTER=0
  115.     fi
  116.  
  117.     # Try repairing the link
  118.     if [ $BADCOUNTER -eq $REPAIR_THRESHOLD ]; then
  119.         usb_reset >> $LOGFILE
  120.         sudo ifdown eth0
  121.         sudo ifdown usb0
  122.         sudo $PCI_MODEM -d >> $LOGFILE
  123.         sudo poff cloudvpn
  124.         echo "$(date +'%F %X %z'): WARNING: Disabling network devices" >> $LOGFILE
  125.         sleep 5
  126.         echo "$(date +'%F %X %z'): WARNING: Enabling network devices" >> $LOGFILE
  127.         sudo ifup eth0
  128.         sudo ifup usb0
  129.         sudo service pcimodem start
  130.         sudo pon cloudvpn
  131.     fi
  132.  
  133.     # Do something about extended link outage
  134.     if [ $BADCOUNTER -eq $BAD_THRESHOLD ]; then
  135.         echo "$(date +'%F %X %z'): ERROR: REBOOTING $BADCOUNTER out of $BAD_THRESHOLD bad pings in a row" >> $LOGFILE
  136.         usb_status >> $LOGFILE
  137.         pci_status >> $LOGFILE
  138.         ifconfig >> $LOGFILE
  139.         route -n >> $LOGFILE
  140.         $PCI_MODEM -d >> $LOGFILE
  141.         $KICK_WATCHDOG
  142.     fi
  143.  
  144.     # This condition should not happen, but just to be MECE
  145.     if [ $BADCOUNTER -gt $BAD_THRESHOLD ]; then
  146.         failCounter=$(($BADCOUNTER-$BAD_THRESHOLD))
  147.         echo "$(date +'%F %X %z'): ERROR: REBOOTING failed $failCounter times, keep trying." >> $LOGFILE
  148.         usb_status >> $LOGFILE
  149.         pci_status >> $LOGFILE
  150.         ifconfig >> $LOGFILE
  151.         route -n >> $LOGFILE
  152.         $PCI_MODEM -d >> $LOGFILE
  153.         $KICK_WATCHDOG
  154.     fi
  155.  
  156. done
RAW Paste Data
Top