Executando comandos no telnet do Mikrotik via shell script

Publicado por Edmo Vamerlatti Costa em 19/04/2009

[ Hits: 39.563 ]

 


Executando comandos no telnet do Mikrotik via shell script



Essa é minha primeira dica por aqui, espero que seja útil a alguém.

Testado no Ubuntu 8.10 Linux.

Utilizo essa parte do script para adicionar os clientes cadastrados e ativos na tabela ARP do MK, porém coloquei só o essencial, podendo ser modificado conforme necessidade.

O script recebe os parâmetros host, usuário e senha, realiza o login, envia o comando e por fim fecha a seção de telnet. O \r serve pra dar ENTER após o comando.

Dependências: expect.

Abaixo o script (meu_script):

#!/usr/bin/expect -f

log_user 0

set host [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]

spawn telnet ${host}

expect "Login:"
send -- "${user}\r"

expect "Password:"
send -- "${password}\r"

expect ">"
send -- "comando a ser enviado \r"

expect ">"
send -- "exit\r"

Para utilizar:

# ./meu_script 192.177.4.5 admin 123456

Sendo admin e 123456 o usuário e senha respectivamente.

[]'s

Outras dicas deste autor

Whitelist e blacklist globais no Amavis-new

Leitura recomendada

cURL - Brute-force em aplicações Web

Quantos comandos digitei nesse terminal?

Script para Ripar um cd inteiro

Clonar HDs em máquinas Windows 7 via servidor openSUSE

Adicionando cor ao comando echo

  

Comentários
[1] Comentário enviado por lecirhaas em 24/04/2010 - 00:44h

Olá.

edinhow, alterei seu script conforme minhas necessidades... ficou assim:

#!/usr/bin/expect -f
log_user 0
set host [lindex $argv 0]
set mac [lindex $argv 1]
set ipaddr [lindex $argv 2]
set comment [lindex $argv 3]
set interf [lindex $argv 4]
set veloc [lindex $argv 5]
spawn telnet ${host}
expect "Login:"
send -- "xxxxxxxxxx\r" #fixei o login internamente, pois é o mesmo em todos os meus APs
expect "Password:"
send -- "yyyyyyyyyy\r" #fixei a senha internamente, pois é a mesma em todos os meus APs
expect ">"
send -- "interface wireless access-list add mac-address=${mac} interface=${interf} comment=${comment} \r"
expect ">"
send -- "ip dhcp-server lease add mac-address=${mac} server=${interf} address=${ipaddr} comment=${comment}\r"
expect ">"
send -- "ip arp add address=${ipaddr} mac-address=${mac} interface=${interf} comment=${comment}\r"
expect ">"
send -- "queue simple add target-addresses=${ipaddr} max-limit=${veloc} name=${comment}\r"
expect ">"
send -- "exit\r"

A sintaxe ficou assim:
> meu_script ip_do_mikrotik mac_cliente ip_cliente comentario interface velocidade

Exemplo:
> meu_script 192.168.200.10 00120ed62211 192.168.0.15 Fernando painel_02 64000/200000

*OBS: é preciso observar que o nome da interface e do servidor dhcp devem ser identicos.

Funciona perfeitamente em MKs 2.xx, mas estou tendo dificuldades em utiliza-lo na versão 3.xx, mesmo a sintaxe dos comandos enviados sendo exatamente a mesma. Agradeço a todos e se alguém souber pq acontece isso poste aí...

Valew.

[2] Comentário enviado por carlogray em 25/08/2011 - 11:12h

Olá, ja procurei por todos os lado mas nao encontro, queria um shellscript que eu entrasse com o servidor e ele automaticamente digitasse meu usuario e senha, e depois liberasse a shell pra eu usar apartir dai.
Sera que da?
Obrigado

[3] Comentário enviado por xjc em 08/02/2014 - 15:41h

como eu faço para receber um parametro ? por exemplo connect list da interface wlan?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts