Fredouye

check_freebox.sh

Jun 22nd, 2020
960
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #!/usr/local/bin/bash
  2.  
  3. # ===============================
  4. # Variables
  5. # ===============================
  6.  
  7. WAN_INTERFACE=WAN_DHCP
  8. LOGFILE=/var/log/check_freebox.log
  9. FREEBOX_URL="http://[2a01:xxxx:xxx:xxx::1]:1234"
  10. MY_APP_ID="ipv4Checker.app"
  11. MY_APP_TOKEN="9DKdJddd75ee7743jdjdjd/89DNHED73JD38D3JIDndudYuD"
  12. TELEGRAM_DEST="1234567890"
  13. TELEGRAM_TOKEN="037448484:XE7DJDdd45d7DDe:D8DUdkddUD"
  14. HEALTHCHECKS="D838383-DJDJDJD-D6D6D6-DHDHDH"
  15.  
  16. # ===============================
  17. # Telegram Notification
  18. # ===============================
  19.  
  20. notification() {
  21. /usr/local/bin/curl -s --data chat_id=$TELEGRAM_DEST \
  22. --data-urlencode text="$@" \
  23. "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" > /dev/null
  24. }
  25.  
  26. # ===============================
  27. # WAN status
  28. # ===============================
  29.  
  30. wan_status() {
  31. STATUS=$(/usr/local/sbin/pfSsh.php playback gatewaystatus brief | awk '$1 == "WAN_DHCP" { print $NF }')
  32.  
  33. case $STATUS in
  34. none)
  35. return 0
  36. ;;
  37. down)
  38. return 1
  39. ;;
  40. esac
  41. }
  42.  
  43. # ===============================
  44. # Main loop
  45. # ===============================
  46.  
  47. curl --silent --output /dev/null "https://hc-ping.com/$HEALTHCHECKS"
  48.  
  49. wan_status
  50.  
  51. case $? in
  52. 0)
  53. echo -en "WAN up : $(date)\n" >> $LOGFILE
  54. ;;
  55. 1)
  56. notification "WAN down"
  57. echo -en "WAN down : $(date)\n" >> $LOGFILE
  58.  
  59. source /root/freeboxos_bash_api.sh
  60.  
  61. login_freebox "$MY_APP_ID" "$MY_APP_TOKEN"
  62.  
  63. # Router mode
  64. answer=$(call_freebox_api_put 'lan/config/' '{"mode":"router","ip":"192.168.1.1","name":"Freebox Server","name_dns":"freebox-server","name_mdns":"Freebox-Server","name_netbios":"Freebox_Server"}') || return 1
  65. _check_success "$answer" || return 1
  66. mode=$(get_json_value_for_key "$answer" result.mode)
  67. notification "Mode $mode activé"
  68. echo -en "Mode $mode activé : $(date)\n" >> $LOGFILE
  69.  
  70. sleep 1
  71.  
  72. # Bridge mode
  73. answer=$(call_freebox_api_put 'lan/config/' '{"mode":"bridge","ip":"192.168.1.1","name":"Freebox Server","name_dns":"freebox-server","name_mdns":"Freebox-Server","name_netbios":"Freebox_Server"}') || return 1
  74. _check_success "$answer" || return 1
  75. mode=$(get_json_value_for_key "$answer" result.mode)
  76. notification "Mode $mode activé"
  77. echo -en "Mode $mode activé : $(date)\n" >> $LOGFILE
  78.  
  79. sleep 60
  80.  
  81. wan_status && (notification "WAN back up"; echo -en "WAN back up : $(date)\n" >> $LOGFILE)
  82. ;;
  83. esac
Add Comment
Please, Sign In to add comment