Script para automatizar comandos em switches Cisco…

Imagine a situação em que você precisa aplicar uma série de comandos em diversos switches…. Imaginou…

Então ai vai um script que pode lhe ajudar no processo.

 	 	

#!/usr/bin/expect

# Copyleft (c) 2009 Marcos Pitanga <[email protected]>

# arg1 = IP

set ip [lindex $argv 0]

set timeout 60

spawn telnet $ip

 

expect "Password:"

send "cisco1234\r"

 

expect ">"

send "enable\r"

 

expect "Password:"

send "cisco1234\r"

 

expect "#"

send "configure terminal\r"

 

expect "(config)"

send "no ip dhcp snooping\r"

 

expect "(config)"

send "no ip igmp snooping\r"

 

expect "(config)"

send "exit\r"

 

expect "#"

send "show running-config\r"

 

expect "#"

send "copy running-config startup-config\r"

expect "startup-config"

send "\r"

 

expect "#"

send "exit\r"

Divirtam-se…



Comente usando o Facebook!

17 comentários

Pular para o formulário de comentário

  1. Ah!!! Velho expect!!!
    Esses dias apos muito ler sobre o expect e sua sintaxe “descobri” o autoexpect. Muito muito util, valeu!

  2. E aonde/como eu aplico isso?

  3. De uma máquina que tenha Linux, que tenha o expect instalado, execute como root chmod +x atualiza.expect e depois execute:

    ./atualiza.expect

    []’s

  4. Legal dele que também podemos criar um script de email para quando o Backup não funcionar 🙂

  5. Marcos, acho q tá faltando alguma coisa no seu script… Editei ele aqui de acordo com minhas necessidades (uso TACACS) e só recebo timeout do equipament, seja ele switch ou router.

    Já vi essa msg qdo configurei o RANCID, mas, alterando um parâmetro no software, resolvi o problema.

    abraço

  6. Interessante, mas ainda nao sei quando irei utilizar isso nos meus clientes!!!

  7. Boa!

    Precisava de alguma ferramenta/script que automatizasse a verificação de portas de switch que não estejam sendo utilizadas, de modo a possibilitar um inventário… Alguém sugere algum software/script?

  8. só fazer umas modificações no script rox, utilizando sh ip int b e sh int para ver se as interfaces estão down.

  9. Nao apareceu o \r no final de cada linha

  10. Senhores, creio que pela formatação do HTML e corta o \

    Então, antes de qualquer r no final use \r.

    []’s

  11. Senhores,

    Analisando o script postado por Marcos Pitanga, fiz umas adaptações simples para quem utiliza Linux como SYSLOG.

    Att,

    Fabricio Oliveira
    [email protected]

    USANDO O COMANDO TELNET ou SSH

    #!/usr/bin/expect -f

    set data [exec date +%d%m%y]

    set timeout 3

    spawn -noecho telnet IP_do_ATIVO OU spawn -noecho ssh -c DES(CHAVE CRIPTOGRAFIA) -l USUARIO IP_DO_ATIVO

    expect “Password:”
    send “SENHA_DO_ATIVO\r”

    expect “>”
    send “ena\r”

    expect “Password:”
    send “SENHA_DO_ENABLE\r”

    expect “#”
    send “copy running-config tftp:IP_SERVIDOR_SYSLOG\r”

    send “IP_SERVIDOR_SYSLOG\r”
    send “NOME_DO_ATIVO_$data.cfg”
    send “\r”
    expect “#”
    send “exit\r”

    ###################################

  12. roxsnd, fiz um script que faz uma verificaçao automatizada em todos os switches e procura por portas “notconnected”, joga os resultados separadamente pastas com a data e arquivos nomeados com o ip do switch. Caso se interesse, eh so falar.

  13. Post Interessante! Valeu Marcos Pitanga!

  14. Ravy Dourado, poderia me enviar esse script para ver como está funcionando??

    Abraço.

  15. O script é simple.. mas se entendi certo precisamos digitar o IP de cada host para efetuar as configurações.
    Como seria o script para que ele pegue o IP do Switch ou Router automaticamente em um arquivo com as entradas abaixo por exemplo?

    200.55.55.20
    192.43.2.19
    78.45.97.253
    10.5.20.203
    189.100.241.110

    Coloquei 4 entradas como exemplo.. mas o script precisará varrer um arquivo texto com uns 300 IPs e configurar todos com as mesmas infos.

    Alguém pode auxiliar nisso?

  16. edu, vc pode fazer da seguinte maneira.

    for i in `cat nome_do_arquivos`
    do
    echo “$i \n”
    done

    Entre o do… done vc coloca os comandos que serão executados.
    Neste exemplo ele ira ler o arquivo e mostrar na tela o conteudo de cada linha

  17. Pessoal, boa tarde.

    E quando ele não encontra o expect como na saída:
    /usr/bin/expect: bad interpreter: No such file or directory

    Obrigado

Deixe uma resposta