check_ip_dispo_vpn.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/bin/sh
  2. # Petit script custom pour sonder le nombre d'IP attribuées pour le VPN
  3. # Config par défaut
  4. WARNING_RANGE=250
  5. CRITICAL_RANGE=253
  6. PROGPATH=$( echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,' )
  7. REVISION="0.1"
  8. # Stop at the first non-catched error
  9. set -e
  10. # Include check_range()
  11. . $PROGPATH/utils.sh
  12. #
  13. # Fonction d'aide
  14. #
  15. usage() {
  16. cat <<EOF
  17. Usage :
  18. $0 -h
  19. $0 [-w warning_range] [-c critical_range]
  20. Valeurs par défaut:
  21. warning_range: $WARNING_RANGE
  22. critical_range: $CRITICAL_RANGE
  23. EOF
  24. }
  25. #
  26. # Gestion des paramètres
  27. #
  28. while getopts hw:c:W:C: f; do
  29. case "$f" in
  30. 'h')
  31. usage
  32. exit
  33. ;;
  34. 'w')
  35. WARNING_RANGE="$OPTARG"
  36. ;;
  37. 'c')
  38. CRITICAL_RANGE="$OPTARG"
  39. ;;
  40. \?)
  41. usage
  42. exit 1
  43. ;;
  44. esac
  45. done
  46. #
  47. # Lancement de la commande
  48. #
  49. # Note : on lance les traitements "sûrs" (décompte) ensuite pour
  50. # bien capturer un éventuel échec de la commande
  51. # principale.
  52. # En outre, grep retourne un code d'erreur si aucune
  53. # occurrence n'est trouvée.
  54. RESULT="$( cat /etc/openvpn/ccd/*|awk '{print $2}'|sed 's/.*\.//'|sort -nu | wc -l)"
  55. # Si la commande ne s'est pas correctement executée,
  56. # on renvoie unknown
  57. if [ "$?" -ne 0 ]; then
  58. echo "UNKNOWN : error at command launch : $RESULT"
  59. exit $STATE_UNKNOWN
  60. fi
  61. # Ventilation selon valeur
  62. RETURN_STATUS=$STATE_OK
  63. RETURN_OUTPUT="OK ($RESULT)"
  64. if check_range "$RESULT" "$CRITICAL_RANGE"; then
  65. RETURN_STATUS=$STATE_CRITICAL
  66. RETURN_OUTPUT="CRITICAL ($RESULT/$CRITICAL_RANGE)"
  67. elif check_range "$RESULT" "$WARNING_RANGE"; then
  68. RETURN_STATUS=$STATE_WARNING
  69. RETURN_OUTPUT="WARNING ($RESULT/$WARNING_RANGE)"
  70. fi
  71. # Affichage final
  72. printf "%s | val=%d;%s;%s\n" "$RETURN_OUTPUT" "$RESULT" "$WARNING_RANGE" "$CRITICAL_RANGE"
  73. exit $RETURN_STATUS