Script bash que encontre mac-address do PC na rede [RESOLVIDO]

1. Script bash que encontre mac-address do PC na rede [RESOLVIDO]

Paulo Fernando Britz
ALpapone

(usa Ubuntu)

Enviado em 16/04/2019 - 22:58h

Estou tentando criar um script que loga nos switches da rede e busque na tabela-mac o endereço MAC digitado pelo usuario no prompt.
Já criei o script que entra nos switches via expect logando e rodando o comando para mostrar a tabela-mac, e via grep ele busca o MAC digitado pelo usuário.
Como são vário switches na rede , eu preciso de um script que chamasse esses outros scripts do expect e jogasse na tela o nome do switch e o MAC encontrado.



  


2. Re: Script bash que encontre mac-address do PC na rede [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/04/2019 - 23:14h


ALpapone escreveu:

Estou tentando criar um script que loga nos switches da rede e busque na tabela-mac o endereço MAC digitado pelo usuario no prompt.
Já criei o script que entra nos switches via expect logando e rodando o comando para mostrar a tabela-mac, e via grep ele busca o MAC digitado pelo usuário.
Como são vário switches na rede , eu preciso de um script que chamasse esses outros scripts do expect e jogasse na tela o nome do switch e o MAC encontrado.

Boa noite.
Sugestão:
Crie um arquivo txt com o IP dos Switches, um por linha.
Faça um laço, para pegar o IP
conecte no switch.
Exemplo:
while read IP;do 
echo -e "\nConectando em $IP\n"
#COLOQUE AQUI O COMANDO PARA CONECTAR no Switch#
done<switches.txt

Obs.: switches.txt, contem o IP de cada switch

Interessante => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


3. Re: Script bash que encontre mac-address do PC na rede

Paulo Fernando Britz
ALpapone

(usa Ubuntu)

Enviado em 17/04/2019 - 11:18h

Olá Marcelo,
Obrigado pelo retorno!!! Não consegui fazer funcionar pelo seu exemplo mas dica de criar um switches.txt com os IPs foi muito útil. Da forma como fiz abaixo ele faz a leitura do switches.txt mas agora ocorre um "problema" no script dentro de expect -c. O bash reconhece como comentário o caracter '#' anulando o resto do codigo. Sabe informar como evito que o caracter # seja inicio de comentário? (A parte expect "#" é onde ocorre esse problema devido a minha inexperiência)

#!/bin/bash

switch=$(cat switches.txt)
for ip in $switch;
do


echo -e "\nConectando em $ip\n"

expect -c "
spawn telnet $ip

set timeout -1
expect "User:"
send -- "usuario\r"
expect "Password"
send -- "senha\r"
expect ">"
send -- "enable \r"
expect "#"
send -- "show bridge address-table\r"
expect "uit"
send -- "\r"
expect eof"
done


4. Re: Script bash que encontre mac-address do PC na rede [RESOLVIDO]

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 17/04/2019 - 11:32h


tem uma ferramenta que pode de ajudar
o ansible de uma lida

https://ciscoredes.com.br/tag/ansible/


5. Re: Script bash que encontre mac-address do PC na rede [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/04/2019 - 17:37h


ALpapone escreveu:

Olá Marcelo,
Obrigado pelo retorno!!! Não consegui fazer funcionar pelo seu exemplo mas dica de criar um switches.txt com os IPs foi muito útil. Da forma como fiz abaixo ele faz a leitura do switches.txt mas agora ocorre um "problema" no script dentro de expect -c. O bash reconhece como comentário o caracter '#' anulando o resto do codigo. Sabe informar como evito que o caracter # seja inicio de comentário? (A parte expect "#" é onde ocorre esse problema devido a minha inexperiência)

#!/bin/bash

switch=$(cat switches.txt)
for ip in $switch;
do


echo -e "\nConectando em $ip\n"

expect -c "
spawn telnet $ip

set timeout -1
expect "User:"
send -- "usuario\r"
expect "Password"
send -- "senha\r"
expect ">"
send -- "enable \r"
expect "#"
send -- "show bridge address-table\r"
expect "uit"
send -- "\r"
expect eof"
done

Boa tarde Alpapone.
Veja se funciona....

#!/bin/bash
while IFS=":" read -r IP USER PASS;do
echo "IP:${IP} USER:${USER} PASS:${PASS}";
#Chame o script expect com os argumentos IP USUARIO SENHA, exemplo:
echo "./SCRIPTEXPECT $IP $USER \"$SENHA\""
done<switches.txt

#Formato do arquivo
cat switches.txt
IP1:USER1:PASS1
IP2:USER2:PASS2
. . .

#Set as variáveis no script expect, exemplo:
#!/usr/bin/expect -f
set timeout -1
set IP [lindex $argv 0]
set USER [lindex $argv 1]
set PASS [lindex $argv 2]
expect -c "
spawn telnet $IP
expect "User:"
send -- "$USER \r"
expect "Password"
send -- "$PASS\r"
expect ">"
send -- "enable \r"
expect "#"
send -- "show bridge address-table\r"
expect "uit"
send -- "\r"
expect eof"

A ideia é essa....
Interessante: echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts