Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

6/10/2014

Broadcast Message - Linux


Um dia por causa de um problema de energia no data center tivemos que tirar as instâncias Informix do ar o mais rápido possível pois o gerador não acionou e estava só na bateria, para agilizar o envio das mensagens aos usuários do Informix (Linux) foi desenvolvido uma shell script para fazer isso.

Criando uma Mensagem para Enviar

Antes de enviar a mensagem temos criar uma, vamos usar a opção 1 (Carregar Mensagem);
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:00:05
-------------------------------------------------------------------------------------------------
                                         c099 - informix

         Code  Basic Services              
         ----  --------------------------------------   
          1    Carregar Mensagem                        
          2    Checar Mensagem Carregada                
          3    Enviar Mensagem Carragada                
          4    Deletar Mensagem Carregada               
          0    Voltar ao Menu Inicial                   
         ----  --------------------------------------   

                Digita um Codigo - 1
Dá para criar uma nova mensagem ou utilizar um novo modelo, neste exemplo vamos pegar a mensagem número 2 (Sairemos do ar daqui a 5 minutos)
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:00:32
-------------------------------------------------------------------------------------------------
                                         c099 - informix

         Code  Basic Services              
         ----  ------------------------------------------------ 
          1    Criar  - Nova Mensagem                           
          2    Modelo - Sairemos do ar daqui a 5 minutos        
          3    Modelo - Estamos saindo agora do ar              
          4    Modelo - Estamos saindo do ar - Horario de Verao 
          5    Modelo - Estamos saindo do ar - Manutencao       
          0    Voltar ao Menu Inicial                           
         ----  ------------------------------------------------ 

                Digita um Codigo - 2
Enter para continuar;
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:00:42
-------------------------------------------------------------------------------------------------
                                         c099 - informix

                        +------------------------------------------------+
                        |                                                |
                        |              Use comandos de VI                |
                        |                                                |
                        +------------------------------------------------+

Pressione qualquer tecla para continuar... 
Agora estamos no vi - estando tudo ok de o comando :wq
+------------------------------------------------------------------------+
|          **** O sistema vai sair fora do ar por 5 minutos ****         |
+------------------------------------------------------------------------+
|                                                                        |
| Agora sao 16:00:54 as 16:05:54 o sistema vai sair do ar;               |
|                                                                        |
| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |
|                                                                        |
| DBA/Informix                                                           |
|                                                                        |
+------------------------------------------------------------------------+

:wq 
Vamos enviar esta mensagem que criamos - vamos sair deste menu (0) enter
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:01:11
-------------------------------------------------------------------------------------------------
                                         c099 - informix

         Code  Basic Services              
         ----  ------------------------------------------------ 
          1    Criar  - Nova Mensagem                           
          2    Modelo - Sairemos do ar daqui a 5 minutos        
          3    Modelo - Estamos saindo agora do ar              
          4    Modelo - Estamos saindo do ar - Horario de Verao 
          5    Modelo - Estamos saindo do ar - Manutencao       
          0    Voltar ao Menu Inicial                           
         ----  ------------------------------------------------ 

                Digita um Codigo - 0 
Para enviar digite 3 enter;
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:05:46
-------------------------------------------------------------------------------------------------
                                         c099 - informix

         Code  Basic Services              
         ----  --------------------------------------     
          1    Carregar Mensagem                          
          2    Checar Mensagem Carregada                  
          3    Enviar Mensagem Carragada                  
          4    Deletar Mensagem Carregada                 
          0    Voltar ao Menu Inicial                     
         ----  --------------------------------------     

                Digita um Codigo - 3
Na minha conexão ssh recebi a mensagem;
-------------------------------------------------------------------------------------------------
10/06/2014                      ***** INFORMIX BASIC SERVICES *****                      16:06:02
-------------------------------------------------------------------------------------------------
                                         c099 - informix


Broadcast message from informix (Tue Jun 10 16:06:02 2014):

+------------------------------------------------------------------------+
|          **** O sistema vai sair fora do ar por 5 minutos ****         |
+------------------------------------------------------------------------+
|                                                                        |
| Agora sao 16:05:36 as 16:10:36 o sistema vai sair do ar;               |
|                                                                        |
| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |
|                                                                        |
| DBA/INFORMIX                                                           |
|                                                                        |
+------------------------------------------------------------------------+

Pressione qualquer tecla para continuar... 
Em outra conexão ssh também apareceu;
[c099:informix]$/export/home/informix> [c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
[c099:informix]$/export/home/informix> 
Broadcast message from informix (Tue Jun 10 16:06:02 2014):

+------------------------------------------------------------------------+
|          **** O sistema vai sair fora do ar por 5 minutos ****         |
+------------------------------------------------------------------------+
|                                                                        |
| Agora sao 16:05:36 as 16:10:36 o sistema vai sair do ar;               |
|                                                                        |
| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |
|                                                                        |
| DBA/Informix                                                           |
|                                                                        |
+------------------------------------------------------------------------+ 
Script Completo

Esta abaixo o script completo.
# -----------------------------------------------------------------------------------------------#
# Funcao : Enviar mensagens aos usuarios no servidor linux.                                      #  
# Autor  : Claudemar Martins de Sa                                                               #
# Data   : 10/06/2014                                                                            #
# Fonte  : http://www.vivaolinux.com.br/script/Menu-tarefas-com-SSH                              #
# -----------------------------------------------------------------------------------------------#
 
MENSAGEM_OPCOES () {

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "         Code  Basic Services              "
echo "         ----  --------------------------------------     "
echo "          1    Carregar Mensagem                          "
echo "          2    Checar Mensagem Carregada                  "
echo "          3    Enviar Mensagem Carragada                  "
echo "          4    Deletar Mensagem Carregada                 "
echo "          0    Voltar ao Menu Inicial                     "
echo "         ----  --------------------------------------     "
echo
echo -n "                Digita um Codigo - "
read OPCAO
case $OPCAO in  
      1) MENSAGEM_PREPARAR ;;
      2) MENSAGEM_CHECAR ;;
      3) MENSAGEM_ENVIAR ;;
      4) MENSAGEM_DELETAR ;;
      0) clear ; exit ;;
      *) clear ; MENSAGEM_OPCOES ;;
   esac
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR () {
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "         Code  Basic Services              "
echo "         ----  ------------------------------------------------ "
echo "          1    Criar  - Nova Mensagem                           "
echo "          2    Modelo - Sairemos do ar daqui a 5 minutos        "
echo "          3    Modelo - Estamos saindo agora do ar              "
echo "          4    Modelo - Estamos saindo do ar - Horario de Verao " 
echo "          5    Modelo - Estamos saindo do ar - Manutencao       " 
echo "          0    Voltar ao Menu Inicial                           "
echo "         ----  ------------------------------------------------ "
echo
echo -n "                Digita um Codigo - "
read OPCAO
case $OPCAO in  
      1) MENSAGEM_PREPARAR_CRIAR_1 ;;
      2) MENSAGEM_PREPARAR_CRIAR_2 ;;
      3) MENSAGEM_PREPARAR_CRIAR_3 ;;
      4) MENSAGEM_PREPARAR_CRIAR_4 ;;
      5) MENSAGEM_PREPARAR_CRIAR_5 ;;
      0) clear ; MENSAGEM_OPCOES ;;
      *) clear ; MENSAGEM_PREPARAR ;;
   esac
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR_CRIAR_1 () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                        +------------------------------------------------+"
echo "                        |                                                |"
echo "                        |              Use comandos de VI                |"
echo "                        |                                                |"
echo "                        +------------------------------------------------+"
echo
echo -n "Pressione qualquer tecla para continuar..."
read MSG

echo "+------------------------------------------------------------------------+" > $LOG1
echo "|                       **** ATENCAO USUARIOS ****                       |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DBA/Informix                                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
clear

vi $LOG1

MENSAGEM_PREPARAR
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR_CRIAR_2 () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                        +------------------------------------------------+"
echo "                        |                                                |"
echo "                        |              Use comandos de VI                |"
echo "                        |                                                |"
echo "                        +------------------------------------------------+"
echo
echo -n "Pressione qualquer tecla para continuar..."
read MSG

echo "+------------------------------------------------------------------------+" > $LOG1
echo "|          **** O sistema vai sair fora do ar por 5 minutos ****         |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| Agora sao $(date '+%T') as $(date --date='300 seconds' '+%T' ) o sistema vai sair do ar;               |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DBA/Informix                                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1

vi $LOG1

MENSAGEM_PREPARAR
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR_CRIAR_3 () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                        +------------------------------------------------+"
echo "                        |                                                |"
echo "                        |              Use comandos de VI                |"
echo "                        |                                                |"
echo "                        +------------------------------------------------+"
echo
echo -n "Pressione qualquer tecla para continuar..."
read MSG

echo "+------------------------------------------------------------------------+" > $LOG1
echo "|                       **** ATENCAO USUARIOS ****                       |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| ESTAMOS TIRANDO O SISTEMA DO AR PARA MANUTENCAO;                       |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DBA/Informix                                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1

vi $LOG1

MENSAGEM_PREPARAR
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR_CRIAR_4 () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                        +------------------------------------------------+"
echo "                        |                                                |"
echo "                        |              Use comandos de VI                |"
echo "                        |                                                |"
echo "                        +------------------------------------------------+"
echo
echo -n "Pressione qualquer tecla para continuar..."
read MSGOA

echo "+------------------------------------------------------------------------+" > $LOG1
echo "|                       **** ATENCAO USUARIOS ****                       |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| O sistema vai sair fora do ar a meia noite para sincronizar com        |" >> $LOG1
echo "| com o novo horario de verao.                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| Daqui a 5 minutos o banco volta a ficar online;                        |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DBA/Informix                                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1

vi $LOG1

MENSAGEM_PREPARAR
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_PREPARAR_CRIAR_5 () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                        +------------------------------------------------+"
echo "                        |                                                |"
echo "                        |              Use comandos de VI                |"
echo "                        |                                                |"
echo "                        +------------------------------------------------+"
echo
echo -n "Pressione qualquer tecla para continuar..."
read MSG


echo "+------------------------------------------------------------------------+" > $LOG1
echo "|                       **** ATENCAO USUARIOS ****                       |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| O SISTEMA VAI FICAR FORA DO AR PARA MANUTENCAO.                        |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DAQUI A POUCO O SISTEMA VOLTA A FICAR NO AR.                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "| DBA/Informix                                                           |" >> $LOG1
echo "|                                                                        |" >> $LOG1
echo "+------------------------------------------------------------------------+" >> $LOG1

vi $LOG1

MENSAGEM_PREPARAR
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_CHECAR () 
{
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"
clear

if [ -e "$LOG1" ] ; then

cat $LOG1;

else

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo

echo "                                +--------------------------------+"
echo "                                |       Arquivo nao existe       |"
echo "                                +--------------------------------+"
fi


echo 
echo -n "Pressione qualquer tecla para continuar..."
read MSG
clear
MENSAGEM_OPCOES
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_DELETAR () 
{
clear
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"

if [ -e "$LOG1" ] ; then

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                                +--------------------------------+"
echo "                                |        Arquivo Deletada        |"
echo "                                +--------------------------------+"
rm $LOG1
else
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo
echo "                                +--------------------------------+"
echo "                                |       Arquivo nao existe       |"
echo "                                +--------------------------------+"
fi

echo
echo -n "Pressione qualquer tecla para continuar..."
read MSG
clear
MENSAGEM_OPCOES
}

# ======================================================================================================
# ======================================================================================================

MENSAGEM_ENVIAR () 
{
LOG1="proc_menu_wall_mensagem.txt"
LOG2="proc_menu_wall_enviando_mensagem.txt"
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo


if [ -e "$LOG1" ] ; then

echo "#!/bin/bash"                                                      > $LOG2
echo "wall <> $LOG2
cat $LOG1                                                               >> $LOG2
echo "ENDOFWALL"                                                        >> $LOG2

chmod 755 $LOG2
./$LOG2

rm $LOG1;
rm $LOG2;

else

clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n "      "
echo -n "                ***** INFORMIX BASIC SERVICES *****   "
echo -n "                   "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo "                                         $(hostname) - $(whoami)"
echo

echo "                                +--------------------------------+"
echo "                                |       Arquivo nao existe       |"
echo "                                +--------------------------------+"
echo 
fi

echo 
echo -n "Pressione qualquer tecla para continuar..."
read MSG
clear
MENSAGEM_OPCOES
}

# ======================================================================================================
# Nao remover a linha abaixo
# ======================================================================================================

MENSAGEM_OPCOES 

0 comentários:

Enviar um comentário