Browse Source

* Versión 0.5

Guzmán Castanedo Villalba 2 years ago
parent
commit
650132cfe0
4 changed files with 59 additions and 9 deletions
  1. 22 2
      README.md
  2. 24 7
      check-virtualhosts
  3. 4 0
      scripts/cron.d/check-virtualhost
  4. 9 0
      scripts/logrotate.d/check-virtualhost

+ 22 - 2
README.md

@@ -1,3 +1,23 @@
-# check-virtual-hosts
+# check-sites
 
-Comprueba si los Virtual Hosts de Nginx están online y envía un email de error en caso contrario
+Comprueba si todos los Virtual Hosts de Nginx están online y envía un email de error en caso contrario.
+
+## Sinopsis
+* `check-sites [OPCIONES]`
+
+## Opciones
+* `-h, --help`: muestra mensaje de error y finaliza.
+* `-t, --to <email>`: email destinatorio.
+* `-f, --from <email>`: email remitente.
+* `-P, --password <pass>`: contraseña del remitente.
+* `-s, --subject`: concepto del email.
+* `-H, --host <host>`: dominio o IP del servidor SMTP (necesita STARTTLS).
+* `-p, --port <port>`: puerto TCP/IP del servidor SMTP (por defecto: 587).
+
+## Instalación
+* `git clone https://code.castanedo.es/guzman/check-sites.git`
+* `cp ./check-sites/check-sites /usr/local/bin/check-sites`
+* `cp ./check-sites/scripts/crond.d/check-sites /etc/cron.d/check-sites`
+* `cp ./check-sites/scripts/logrotate.d/check-sites /etc/logrotate.d/check-sites`
+
+Para configurar el envio de correo electrónico modificar el fichero `/etc/cron.d/check-sites` con las opciones necesarias.

+ 24 - 7
check-virtualhosts

@@ -1,19 +1,29 @@
 #!/bin/bash
 
+##################################################################
+# check-sites: comprueba todos los Virtual Hosts de Nginx y      #
+# envía un email si alguno no se encuentra Online.               #
+#                                                                #
+# Autor: Guzmán Castanedo Villalba                               #
+# Email: guzman@castanedo.es                                     #
+# Licencia: GPLv3 (https://www.gnu.org/licenses/gpl-3.0.en.html) #
+# Agosto 2018                                                    #
+##################################################################
+
 help() {
 	echo -en "Uso: "$(basename $0)" [OPCIONES]\n\n"
 	echo -en "  -h, --help: muestra mensaje de error y finaliza.\n"
 	echo -en "  -t, --to <email>: email destinatario.\n"
-	echo -en "  -f, --from: email remitente.\n"
-	echo -en "  -P, --password: contraseña del remitente.\n"
-	echo -en "  -s, --subject: Concepto del email.\n"
-	echo -en "  -H, --host: dominio o IP del servidor SMTP (necesita STARTTLS).\n"
-	echo -en "  -p, --port: puerto TCP/IP del servidor SMTP (por defecto: $port).\n"
+	echo -en "  -f, --from <email>: email remitente.\n"
+	echo -en "  -P, --password <pass>: contraseña del remitente.\n"
+	echo -en "  -s, --subject <subject>: concepto del email.\n"
+	echo -en "  -H, --host <host>: dominio o IP del servidor SMTP (necesita STARTTLS).\n"
+	echo -en "  -p, --port <port>: puerto TCP/IP del servidor SMTP (por defecto: $port).\n"
 }
 
 sendEmail() {
 # sendEmail
-	echo -en "$message" | mailx -Ssendwait -s "$subject" -S smtp-use-starttls -S smtp-auth=login -S smtp=smtp://$host:$port -S from="$from" -S smtp-auth-user="$from" -S smtp-auth-password="$pass" $to > /dev/null 2>&1
+	echo -en "$message" | s-nail -Ssendwait -s "$subject" -S smtp-use-starttls -S smtp-auth=login -S smtp=smtp://$host:$port -S from="$from" -S smtp-auth-user="$from" -S smtp-auth-password="$pass" $to > /dev/null 2>&1
 	return $?
 }
 
@@ -125,6 +135,11 @@ while true; do
 			;;
 	esac
 done
+which s-nail > /dev/null 2>&1
+if [ $? -ne 0 ];then
+	echo -en "WARNING(S-NAIL): El envio de correo está desactivado (Compruebe comfiguración).\n"
+	email=false
+fi
 if [ -z $to ] && [ $email = true ];then
 	echo -en "WARNING(TO): El envio de correo está desactivado (Compruebe comfiguración).\n"
 	email=false
@@ -164,6 +179,8 @@ if [ ! -z $hostnamesFail ] && [ $email = true ];then
 	message="Envío automático de "$(basename $0)".\nEl sistema presenta Virtual Hosts NO DISPONIBLES.\n""$hostnamesFail""\nCOMPRUEBE QUE EL SERVIDOR.\n"
 	sendEmail
 	if [ $? -ne 0 ];then
-		echo -en "WARNING:\tNo ha sido posible enviar email (REVISE CONFIGURACIÓN).\n"
+		echo -en "\nWARNING:\tNo ha sido posible enviar email (REVISE CONFIGURACIÓN).\n"
+	else
+		echo -en " OK.\n"
 	fi
 fi

+ 4 - 0
scripts/cron.d/check-virtualhost

@@ -0,0 +1,4 @@
+# /etc/cron.d/check-sites: crontab
+
+# Check sites every hour
+0 * * * * root [ -x /usr/local/bin/check-sites ] && /usr/local/bin/check-sites --to "ejemplo@ejemplo.com" --from "admin@ejemplo.com" --password "ejemplo!" --host "smtp.ejemplo.com" >> /var/log/check-sites.log 2>&1

+ 9 - 0
scripts/logrotate.d/check-virtualhost

@@ -0,0 +1,9 @@
+/var/log/check-sites.log {
+	weekly
+	missingok
+	rotate 15
+	compress
+	notifempty
+	create 0640 root adm
+	su root adm
+}