conexão a vários comutadores de / etc / hosts e exportar vários comandos de saída para o arquivo

0
  1. Na verdade, estou falando sobre como registrar várias opções listadas em / etc / hosts e executar em alguns comandos e armazenar a saída em um arquivo de log no host linux principal.
  2. A segunda pergunta pode perguntar como conectar o endereço IP com o nome do switch e criar um catálogo separado para ele e colocar lá cada log de comando.

Eu vi o tópico: Como automatizar a conexão a vários dispositivos de rede, executando um comando e salvando a saída em um arquivo?

Mas como isso poderia funcionar com as minhas necessidades?

SCRIPT:

#!/bin/bash
#=================================================================
#       Variables
#=================================================================
DATE=$(date +"%Y%m%d")
DIR=/logs/cisco/$DATE
INPUT=/etc/hosts
count=0
IP=$addr
#=================================================================
# Check if log directory exists
#=================================================================
if [ ! -d $DIR ]; then
    mkdir -p /logs/cisco/$DATE;
fi;
#================================================================
# Main
#================================================================
while read IP
do
sshpass -p ****** ssh admin@$IP 'sho int fa 1/1' > $DIR/int.log
done < <( sed -e '1,/#ETHERNET SWITCHES/d' -e '/#END SWITCHES/,9999d' $INPUT | awk '{print $1}' )

Agradecemos antecipadamente pela ajuda ...

    
por Mac 28.06.2016 / 12:18

1 resposta

0

Abaixo, estou enviando uma atualização simples que está quase funcionando, mas os arquivos de saída estão vazios, obtendo-se comandos apenas na tela. Se alguém puder ajudar como obter saídas dentro de cada arquivo.

#!/bin/bash
#=================================================================
# Variables
#=================================================================
DATE=$(date +"%Y%m%d")
DIR=/logs/cisco/$DATE
INPUT=/etc/hosts
SW=$(sed -e '1,/#ETHERNET SWITCHES/d' -e '/#END SWITCHES/,$d' $INPUT | awk '{print $2}')
#=================================================================
# Check if log directory exists
#=================================================================
if [ ! -d "$DIR" ]; then
   mkdir -p /logs/cisco/"$DATE";
fi
echo "$SW" | while IFS= read -r line
 do
  mkdir -p -- "$DIR/$line"
done <<<"$SW"
#================================================================
# Main
#================================================================
for ip in $(cat $INPUT | sed -e '1,/#ETHERNET SWITCHES/d' -e '/#END SWITCHES/,$d' $INPUT | awk '{print $1}')
   do
   for line in $(cat $INPUT | sed -e '1,/#ETHERNET SWITCHES/d' -e '/#END SWITCHES/,$d' $INPUT | awk '{print $2}')
   do
    sshpass -p kkk ssh admin@"$ip" 'sho int fo1/1' > "$DIR/$line"/port.log
   done
done
    
por 12.07.2016 / 15:39