Junto con saludarlos, necesito realizarles la siguiente consulta.
Estoy programando un script en Perl que se conecta a una BD Oracle y retorna un número entero. Este número entero lo comparo con un valor X, y si pasa el umbral establecido envío una alerta a través de correo electrónico.
Mi problema es que el código es muy poco profesional. Necesito saber cómo poder realizar de mejor forma la conexión a la base de datos para traer el valor que retorna, como también si hay alguna forma de capturar los errores de conexión y guardarlos en una variable para que estos también puedan ser enviados por correo.
Les comento que mi código sí funciona, pero cuando la base de datos está caída el script no detecta esto.
Adjunto el código que he realizado:
Using perl Syntax Highlighting
- #!C:\Perl\bin\perl.exe -w
- #Transacciones
- use MIME::Lite;
- use strict;
- use POSIX 'strftime';
- my $alerta;
- my $fecha = strftime "%d-%m-%Y %H:%M:%S", localtime;
- my $var;
- my $valor;
- $valor=`sqlplus -S usuario/pass\@tnsname \@F:\\QRY/consulta.sql`;
- $var= $valor + 0;
- my $message = MIME::Lite->new(
- Subject => "DIF MIN REPLICA",
- Data => "Minutos de desfase entre hora actual y hora de ultima transacción en réplica: ".$var." Minutos",
- );
- MIME::Lite->send('smtp','server_correo',Timeout=>60);
- if($var >= 12)
- {
- $message->send();
- open(LECTURA,">>/LOG/ARGENTINA/DIF_MIN_REPLICA.csv");
- print LECTURA $fecha." ; ".$var." ; CRITICAL \n";
- close(LECTURA);
- }
- else
- {
- if($var < 12)
- {
- open(LECTURA,">>/LOG/ARGENTINA/DIF_MIN_REPLICA.csv");
- print LECTURA $fecha." ; ".$var." ; OK \n";
- close(LECTURA);
- }
- else
- {
- open(LECTURA,">>/LOG/ARGENTINA/DIF_MIN_REPLICA.csv");
- print LECTURA $fecha." ; NULL ; CRITICAL \n";
- close(LECTURA);
- }
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4