Executando comandos no telnet do Mikrotik via shell script

Publicado por Edmo Vamerlatti Costa em 19/04/2009

[ Hits: 45.782 ]

 


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

Renomeando em massa sem precisar instalar comandos adicionais

ZSWAP controlável. ligável e desligável - pacote completo

Como mudar o teclado do Debian em uma máquina virtual configurada em outro SO

Automoatizar backup no pfSense

Como substituir caracteres acentuados pelos equivalentes não-acentuados

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts