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