Enviando comandos para máquinas da rede
Publicado por Heros Eloi Souza 29/12/2004
[ Hits: 10.781 ]
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.
#!/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
Player de música em Shell com Yad
Enviar mensagens Via Net Send no Linux
Nenhum coment�rio foi encontrado.
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Proteja seu Linux Mint com o Timeshift: Restaure o sistema mesmo que ele não inicie!
Instalando Google Chrome no Debian 13
Erro de interface de Rede no Virt Manager dentro Debian 13 KDE (5)
Salvar estado da VM no virt-manager (4)