Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.91 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement