As demandas de hoje em dia para quem trabalha no ramo de comunicação broadcast, exigem muito da agilidade da equipe que presta suporte. Agilidade para diagnósticar, identificar e corrigir o problema.
Visando esses aspectos, resolvi criar um tipo de auto-ping, para fazer o Ping de determinados endereços da cadeia de servidores de Legenda Oculta.
Acontece o seguinte: A empresa que trabalho presta serviço de Legenda Oculta para si e para outras emissoras de televisão pelo setor de acessibilidade, onde são produzidos legenda 24 horas por dia, 7 dias por semana. Fazendo ao vivo e gravando.
Essa legenda é inserida através de um servidor, que possui um IP. Isso através de um instrumento que capta a fala e a envia codificada para este servidor e que também possui um IP. O servidor envia a legenda para o encoder principal, que adiciona a legenda ao sinal audiovisual para ser transmitido e que possui seu IP, mas isso através de endereços de IPs fixos contratado, ou seja, outros dois IPs: o de saída da gente e o de chegada na emissora que contratou nosso serviço. E tudo isso com seus respectivos endereços de redundância.
O ponto é que, quando o serviço pára, precisamos agir rapidamente nessa cadeia para solucionar o problema. Cada segundo que passa sem legenda, é um valor que é descontado do pagamento da contratante.
Nesse tipo de serviço, cada segundo conta e agilizar a identificação e o diagnóstico do problema, agiliza muito na busca por soluções.
Foi daí que veio a idéia do Auto-Ping. Onde foi criado uma aplicação usando AppleScript e outra usando Visual Basic Script (VBS), que abre o terminal (ou prompt no caso do VBS) automaticamente e executa o comando ping de todos esses IPs.
O objetivo é simples, ver se alguma parte da cadeia perdeu conexão, abaixo segue o código em VBS:
' Programa: ping.vbs
' Objetivo: Realizar o ping automático de alguns endereços IPs.
' Autor: Alex Souza Marques
set obj = CreateObject("Wscript.shell")
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
Quem quiser aplicar esse programa, basta substituir o xxx.xxx.xxx.xxx, pelos endereços IPs desejados.
Em AppleScript, foi feito o mesmo e adicionado alguns outros recursos. Como informação do que está sendo verificado e uma mensagem do computador informado se está bom ou não e se a pessoa quer continuar verificando o resto da cadeia de equipamentos. Segue o código abaixo.
Visando esses aspectos, resolvi criar um tipo de auto-ping, para fazer o Ping de determinados endereços da cadeia de servidores de Legenda Oculta.
Acontece o seguinte: A empresa que trabalho presta serviço de Legenda Oculta para si e para outras emissoras de televisão pelo setor de acessibilidade, onde são produzidos legenda 24 horas por dia, 7 dias por semana. Fazendo ao vivo e gravando.
Essa legenda é inserida através de um servidor, que possui um IP. Isso através de um instrumento que capta a fala e a envia codificada para este servidor e que também possui um IP. O servidor envia a legenda para o encoder principal, que adiciona a legenda ao sinal audiovisual para ser transmitido e que possui seu IP, mas isso através de endereços de IPs fixos contratado, ou seja, outros dois IPs: o de saída da gente e o de chegada na emissora que contratou nosso serviço. E tudo isso com seus respectivos endereços de redundância.
O ponto é que, quando o serviço pára, precisamos agir rapidamente nessa cadeia para solucionar o problema. Cada segundo que passa sem legenda, é um valor que é descontado do pagamento da contratante.
Nesse tipo de serviço, cada segundo conta e agilizar a identificação e o diagnóstico do problema, agiliza muito na busca por soluções.
Foi daí que veio a idéia do Auto-Ping. Onde foi criado uma aplicação usando AppleScript e outra usando Visual Basic Script (VBS), que abre o terminal (ou prompt no caso do VBS) automaticamente e executa o comando ping de todos esses IPs.
O objetivo é simples, ver se alguma parte da cadeia perdeu conexão, abaixo segue o código em VBS:
' Programa: ping.vbs
' Objetivo: Realizar o ping automático de alguns endereços IPs.
' Autor: Alex Souza Marques
set obj = CreateObject("Wscript.shell")
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
obj.run "cmd.exe"
wscript.sleep 2000
obj.sendkeys "ping xxx.xxx.xxx.xxx -t"
obj.sendkeys "{Enter}"
wscript.sleep 1000
Quem quiser aplicar esse programa, basta substituir o xxx.xxx.xxx.xxx, pelos endereços IPs desejados.
Em AppleScript, foi feito o mesmo e adicionado alguns outros recursos. Como informação do que está sendo verificado e uma mensagem do computador informado se está bom ou não e se a pessoa quer continuar verificando o resto da cadeia de equipamentos. Segue o código abaixo.
(*
Programa: ping.app
Objetivo: Verificar a conexão da cadeia de equipamentos de exibição da legenda oculta
Autor: Alex Souza Marques
*)
set titulo to (current date) as string
tell application "Terminal"
do script "ping xxx.xxx.xxx.xxx"
end tell
try
do shell script "ping -o -t 2 xxx.xxx.xxx.xxx"
set var1 to 0 as integer
on error
set var1 to 1 as integer
end try
if var1 = 0 then
display dialog ("Servidor XXX (TV xxx) *** Está Pingando! XD ***") with title titulo
else
display dialog ("Servidor XXX (TV xxx) *** Não Está Pingando! :( ***") with title titulo
end if
tell application "Terminal"
do script "ping xxx.xxx.xxx.xxx"
end tell
try
do shell script "ping -o -t 2 xxx.xxx.xxx.xxx"
set var2 to 0 as integer
on error
set var2 to 1 as integer
end try
if var2 = 0 then
display dialog ("Equipamento XXX (TV xxx) *** Está Pingando! XD ***") with title titulo
else
display dialog ("Equipamento XXX (TV xxx) *** Não Está Pingando! :( ***") with title titulo
end if
tell application "Terminal"
do script "ping xxx.xxx.xxx.xxx"
end tell
try
do shell script "ping -o -t 2 xxx.xxx.xxx.xxx"
set var3 to 0 as integer
on error
set var3 to 1 as integer
end try
if var3 = 0 then
display dialog ("Link - 1 (TV xxx) *** Está Pingando! XD ***") with title titulo
else
display dialog ("Link -1 (TV xxx) *** Não Está Pingando! :( ***") with title titulo
end if
tell application "Terminal"
do script "ping xxx.xxx.xxx.xxx"
end tell
try
do shell script "ping -o -t 2 xxx.xxx.xxx.xxx"
set var4 to 0 as integer
on error
set var4 to 1 as integer
end try
if var4 = 0 then
display dialog ("Link - 2 (TV xxx) *** Está Pingando! XD ***") with title titulo
else
display dialog ("Link - 2 (TV xxx) *** Não Está Pingando! :( ***") with title titulo
end if
Por motivos óbvios devo manter certas informações fora de evidencia, além de que estaria fugindo do objetivo do post e do blog. O mais importante é compartilhar o conhecimento.
Essas aplicações ajudaram muito e continuam ajudando a agilizar o diagnóstico de problemas. Se botar na ponta do lápis, muito já se economizou.
Agradeço aos colegas que inspiraram essa idéia e a todos que compartilham pelo menos um pouco do seu conhecimento para o público.
Comentários
Postar um comentário