Suporte Broadcast - Usando AppleScript para Informar se um Volume está Online

Faz um tempo que não posto nada aqui no blog, pois estava adaptando-me a algumas mudanças, que não eram tão esperadas, mas não foram, de um todo, ruins. Vou tentar não entrar muito nesses detalhes e ir mais direto ao que interessa, que é o assunto do tópico.

Dentro do período de duas semanas, fui dispensado do meu trabalho e fui selecionado para trabalhar em outra empresa, aconteceu tudo muito rápido. Já aqui na nova empresa, começo a observar algumas necessidades e algumas coisas que posso tentar melhorar.

Fazendo atendimento a uma ilha Apple (Protools), que é uma ilha para sonorização, o operador informou que o volume da rede, chamado de "Online", perdia conexão frequentemente. Nos testes feitos por mim não apresentava o dito problema, foi então que pensei em escrever um script "dedo duro", ou seja, que envia-se um e-mail à equipe do suporte em caso do "Online" cair.

Abaixo segue o script desenvolvido em AppleScript

(*
Script: informa.scpt
Objetivo: Envia uma mensagem por e-mail ao administrador da rede caso o volume Online fique offline.
Autor: Alex Souza Marques
*)

set Destinatario to "Destinatario" (*Nome do Administrador da Rede*)
set Endereco to "destinatario@server.ogr.br" (*E-Mail do Destinatário*)
set assunto to "Online Offline" (*Assunto do E-Mail*)

repeat
     if (list disks) does not contain "Online" then
          try
               mount volume "afp://10.2.33.15" (*Aqui Fica o Endereco do Volume Online*)
          on error
               tell application "Mail"
                    set msg to "Online Offline at: " & (time string of (current date))
                    set theMessage to make new outgoing message with properties {subject:assunto,content:msg,visible:true}
                    tell theMessage
                         make new to recipient with properties {name:Destinatario,adress:Endereco}
                         send
                    end tell
               end tell
          end try
          delay 300 (*Delay em Segundos*)
     else
          delay 60 (*Delay em Segundos*)
     end ifend repeat

Resumindo, o script primeiro testa se o volume "Online" está conectado, se não estiver ele tenta montar o volume.
Em caso de sucesso, ele refaz esse passo a cada 60 segundos, para continuar testando a conexão.
Em caso de erro, ele envia uma mensagem de erro por e-mail usando o aplicativo Mail.app, depois espera mais 300 segundos e tenta acessar o online denovo.

Foi exportado o script com aplicação (informa.app) e colocado nos itens de iniciação do usuário, adicionado a conta de e-mail do usuário no aplicativo Mail.app, pois é essa conta que será usada pelo programa para enviar as mensagens para os administradores da rede.

O programa funcionou perfeitamente, mas sugiro uma pequena modificação, que é impor um limite para a quantidade de e-mails que o programa irá enviar no caso de problema. Senão a caixa de entrada do e-mail destinatário irá ficar atolada de mensagens.

Foi desenvolvido o seguinte algoritmo para implementação desta alteração:


Basta adicionar um contador e criar um critério para interromper o repeat. No meu exemplo o loop é interrompido quando ocorre 20 erros, e uma mensagem irá aparecer na tela no usuário dizendo para ele ligar para o suporte.

...
set count to 0
...
set count to count + 1
...
if count = 20 then
     break
...
display dialog "Call 6500" (*Ramal do Suporte*)

É isso! Aos poucos estou adaptando-me a uma nova rotina e espero agora voltar a compartilhar, pelo menos uma vez por semana, alguma experiência minha aqui no Warlex. 

Comentários