Enviando comandos para máquinas da rede

Publicado por Heros Eloi Souza 29/12/2004

[ Hits: 10.586 ]

Download InfoMaquinas.sh




A idéia desse script surgiu para suprir a necessidade de executar um comando simultaneamente em várias estações de trabalho Linux ligadas à rede.

  



Esconder código-fonte

#!/bin/bash
#
# Autor: Heros Eloi (heroseloi@gmail.com)
#
# Licença: GPL
# 
# para maiores informações leia o script "envia_arquivos.sh"
#
# Executa comandos remotos nas estações definidas pelo arquivo $LISTA_MAQUINAS
# e salva a saida no arquivo $LOG_BOM.
# Se a maqiuna naum está disponivel no momento, ela irá reponder com um 
# "falso" ao comando ping, esta maquina então será inserida no $LOG_RUIM
# 
# A sintaxe é simples:
# info_maquina "comando"
# Importante o uso de aspas duplas para que sejam protegidos os comandos que 
# contem ESPAÇO na sua formação.
# Exemplo: info_maquina "ls -l /etc"
#
# Ao Final da execução o Script imprime o relatorio na impressora padrao 
# instalada pelo CUPS.
#
# Arquivo de registro bem sucedido
LOG_BOM=/mnt/backup/shell/servidor/info_maquinas/acesso.log
#
# Arquivo de registro mal sucedido
LOG_RUIM=/mnt/backup/shell/servidor/info_maquinas/erro.log
#
# limpa log
> $LOG_BOM
echo -e "*** *** Comandos executados com sucesso *** ***\n" >> $LOG_BOM
> $LOG_RUIM
echo -e "### ### Comandos executados sem sucesso ### ###\n" >> $LOG_RUIM
#
# Arquivo com lista de maquinas
LISTA_MAQUINAS=/etc/hosts_ativos
#
# comando a ser executado remotamente
COMANDO1=$1
COMANDO1=`echo ${COMANDO1:="vazio"}`
   if [ $# > 1 ]
   then
   COMANDO2=$2
   COMANDO2=`echo ${COMANDO2:="vazio"}`
   fi
#
#
# funcao que exibe a ajuda do script
exibe_ajuda()
{
echo "sintaxe:"
echo "info_maquina <parametro> [comando]"
echo "Onde [comando] é o comando que sera executado nas estações"
echo " "
echo "Parametros:"
echo "-p Envia o relatório para a impressora padrao do CUPS"
echo "-v Mostra o relatório na tela"
echo "-h Mostra esta ajuda"
echo " "
echo "Para maiores informações, leia o cabeçalho do Script."
echo "heroseloi@gmail.com"
}
#
# executa os comandos
executa()
{
echo -e "Comando enviado: $COMANDO2\n\n" >> $LOG_BOM
echo "---------------------------------" >> $LOG_BOM
echo -e "Comando enviado: $COMANDO2\n\n" >> $LOG_RUIM
echo "---------------------------------" >> $LOG_RUIM
for MAQUINA in `cat $LISTA_MAQUINAS | awk '{print $1}'`
do
   ping $MAQUINA -c 1 > /dev/null
   if [ $? == 0 ]
   then
      echo "$MAQUINA OK"
      echo -e "Maquina $MAQUINA\n" >> $LOG_BOM
      ssh $MAQUINA $COMANDO2 >> $LOG_BOM
      echo "---------------------------------" >> $LOG_BOM
   else
      echo -e "$MAQUINA FALHOU\n" >> $LOG_RUIM
      echo "---------------------------------" >> $LOG_RUIM
   fi
done
}
#
# imprime os relatorios na impressora padrão do CUPS
imprime()
{
echo "Imprimindo relarorio de acessos..."
lpr-cups $LOG_BOM
#echo "Imprimindo relarorio de erros..."
#lpr-cups $LOG_RUIM
}
#
# exibe o relatorio na tela
exibe_relatorio()
{
less $LOG_BOM
clear
less $LOG_RUIM
}


#
# funcao principal
case $COMANDO1 in
   "-h")
   exibe_ajuda;;
   
   "-p")
   executa
   imprime;;

   "-v")
   executa
   exibe_relatorio;;

   "vazio")
   exibe_ajuda;;

   *)
   COMANDO2=$COMANDO1
   executa;;
esac

Scripts recomendados

Altera /etc/fstab colocando o parâmetro acl nas partições ext3.

Como Converter várias fotos JPG em arquivos PDFs, compactando e girando em 90º

checkip

cpb - copia arquivos executáveis

Firewall do mikrotik, limitando icmp (ping)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts