MK-AUTH

Exportação automática do MK-AUTH para MIKROTIK por: M4D3


Segue script para exportação da access-list e cadastro de clientes do pppoe secret (pode ser adaptado para hotspot facilmente).

#!/bin/bash
#======== EXPORTACAO DE DADOS MKAUTH PARA MIKROTIK ========#
##---------------==== COMPILADO POR: ====------------------##
##---------- LUCIANO RAMPANELLI - M4D3@HOTMAIL.COM ---------##
#--------------------- www.nimoc.com.br ----------------------#
#===============================================#

banco=mkradius
table=sis_cliente
campo=ativo

#IP DE CADA AP OU SERVIDOR QUE IRA RECEBER OS DADOS
ap1=172.16.16.251
ap2=172.16.16.252

#USUARIO FTP PARA ENVIO DE ARQUIVOS
ftp_user="ftpuser"
ftp_pass="ftpuser123"

#USUARIO SSH PARA EXECUCAO DE COMANDOS
ssh_user="sshuser"
#DEVE SER CADASTRADO SEM SENHA, LIBERAR APENAS IP DO MKAUTH NO MIKROTIK PARA ESTE USUARIO

#ARQUIVOS DESTINO
arquivo1="access-list.rsc"
arquivo2="secret.rsc"


#EXPORTACAO DO BANCO DE DADOS
if [ "$1" = "s" ];then
        mysql -u root -pvertrigo -e\
     "SELECT login, mac, plano, tipo, senha FROM $table WHERE $campo = '$1'" $banco |awk '{ print $1, $2, $3, $4, $5 }' |grep -v "login mac plano tipo senha" |grep -v "NULL" > /tmp/.lmp
fi

count=`cat /tmp/.lmp|wc -l`
indice=$count

#MONTAGEM DA STRING DE IMPORTACAO DOS MACS PARA A ACCESS-LIST
echo "/interface wireless access-list " > $arquivo1
   while [ $count -gt 0 ]; do
     login=`cat /tmp/.lmp |awk '{ print $1 }' |sed -n $count"p"`
     mac=`cat /tmp/.lmp |awk '{ print $2 }' |sed -n $count"p"`
     if [ ! -z $login ]; then
      echo "add comment="$login" disabled=no interface=all mac-address=$mac signal-range=-78.120 forward=no" >> $arquivo1
     fi
    count=`echo $count-1|bc`
   done
cat $arquivo1
echo " "

count=`cat /tmp/.lmp|wc -l`
indice=$count

#MONTAGEM DA STRING DE IMPORTACAO DOS CLIENTES PPPOE
echo "/ppp secret " > $arquivo2
   while [ $count -gt 0 ]; do
     login=`cat /tmp/.lmp |awk '{ print $1 }' |sed -n $count"p"`
     mac=`cat /tmp/.lmp |awk '{ print $2 }' |sed -n $count"p"`
     plano=`cat /tmp/.lmp |awk '{ print $3 }' |sed -n $count"p"`
     tipo=`cat /tmp/.lmp |awk '{ print $4 }' |sed -n $count"p"`
     senha=`cat /tmp/.lmp |awk '{ print $5 }' |sed -n $count"p"`
     if [ $tipo = "pppoe" ]; then
      echo "add caller-id=$mac name=$login password=$senha profile=$plano service=$tipo disabled=yes" >> $arquivo2
     fi
    count=`echo $count-1|bc`
   done
cat $arquivo2
echo " "

#ENVIO DE ARQUIVOS POR FTP
echo "Enviando arquiovos..."
ftp -in $ap1 ap1
        user $ftp_user $ftp_pass
        send $arquivo1
        send $arquivo2
        bye
        EOF
        quit
ap1

ftp -in $ap2 ap2
                   user $ftp_user $ftp_pass
                   send $arquivo1
                   send $arquivo2
                   bye
           EOF
           quit
ap2

echo " "

#EXECUCAO DE COMANDOS VIA SSH
echo "Importando dados..."
ssh $ssh_user@$ap1 sh1
           /ppp secret export file=bkp_secret.rsc
           /ppp secret remove [/ppp secret find]
           /import $arquivo2
           /interface wireless access-list export file=bkp_access-list.rsc
           /interface wireless access-list remove [/interface wireless access-list find]
           /import $arquivo1
           /quit
sh1

ssh $ssh_user@$ap2 sh2
                   /ppp secret export file=bkp_secret.rsc
                   /ppp secret remove [/ppp secret find]
                   /import $arquivo2
                   /interface wireless access-list export file=bkp_access-list.rsc
                   /interface wireless access-list remove [/interface wireless access-list find]
                   /import $arquivo1
                   /quit
sh2

rm -fr $arquivo1
rm -fr $arquivo2

echo "Exportado(s) $indice registro(s)"

#DOCUMENTACAO
#http://thobias.org/doc/shell_bd.html#toc11

#DEPENDENCIAS
#apt-get update
#apt-get install ftp bc -y


#PARA RODAR DIGITE

#mka2mk.sh s

Salve o script acima como mka2mkt.sh
Dê de permissao de execução: chmod +x mka2mkt.sh
E rode o script após configurar os parametros com: ./mka2mkt.sh s

A letra 's' identifica os clientes ativos, mas você pode alterar para usar como bem entender.


O agendamento pode ser feito para rodar durante a madrugada pelo crontab, mantendo seu MK-AUTH sincronizado com mikrotik.


É isso pessoal, dúvidas é só perguntar, convido os colegas a aprimorarem o script bem como a complementarem com novas funções.

Valeu

Luciano Rampanelli - M4D3

Tags: access-list, ajuda, controle, radius, sistema

Exibições: 1730

Responder agora

Respostas a este tópico


Seria interessante o MK-AUTH incorporar estas funções, isso traria maior segurança para os provedores com toda certeza.

Testado em MikroTik 4.x e 5.x

Se o pedro conseguisse fazer isso iria ficar massa pois faço aqui na mão para caso aconteça algo com o server radius a rb assuma tudo fiz um script porem a exportação dos usuarios faço na mão grande isso seria maravilhoso.

Pedro veja o que pode fazer para exportar isso todos os dias pela madrugada ou algo parecido...

grato.

m4d3 disse:


Seria interessante o MK-AUTH incorporar estas funções, isso traria maior segurança para os provedores com toda certeza.

Pra fazer de madrugada basta agendar o script pelo crontab, o ideal seria fazer em tempo real, a cada alteração feita no MK-AUTH enviar também para o MikroTik.

Abraço


O cadastro da secret vai desativado para o mikrotik, basta adicionar em tools netwatch um monitoramento para o ip do MK-AUTH com a seguinte instrução:

DOWN
/ppp secret set [find disabled=yes] disabled=no

UP
/ppp secret set [find disabled=no] disabled=yes


Assim se cair o MK-AUTH a secret é automáticamente ativada e quando religar o MK-AUTH a secret é novamente desativada.





Para rodar automaticamente todos os dias as 04:50 da manhã logo após o backup automático diário, salve o script em /usr/local/mkauth/scripts/mka2mkt.sh e em seguida digite no console:

echo "50 04   * * *   root    sh /usr/local/mkauth/scripts/mka2mkt.sh" >> /etc/cron.d/backup


Lembrando que se fizer atualização do MK-AUTH deve digitar novamente o comando acima para reinstalar o agendamento.


Parabens Luciano, com a flexibilidade dessa regra, aliada ao mk-auth e a um netwatch no Mikrotik o serviço não irá parar tão facilmente!


Valeu Renato, também acredito que será muito útil.

Abraço

muito legal, o interessante que é possivel alterar esse script para fazer um integração de controle IP x MAC na ARP no sistema, que muitos já pediram aqui e não coloquei pq o radius no suporta...

Então pedro, teria como implementar esse script para ser executado pelo mk-auth?

Estamos no aguardo Pedro, se conseguir implementar isso será a mão na roda.

Principalmente se conseguir exportar os usuários para a rb de forma automatica vai ficar show.



Pedro Filho disse:

muito legal, o interessante que é possivel alterar esse script para fazer um integração de controle IP x MAC na ARP no sistema, que muitos já pediram aqui e não coloquei pq o radius no suporta...

não irei incluir, o controle access-list irá continuar sendo feito por radius, mais o Luciano colocou o script completo para quem desejar poder colocar manualmente...

Claudvan Lima disse:

Estamos no aguardo Pedro, se conseguir implementar isso será a mão na roda.

Principalmente se conseguir exportar os usuários para a rb de forma automatica vai ficar show.



Pedro Filho disse:

muito legal, o interessante que é possivel alterar esse script para fazer um integração de controle IP x MAC na ARP no sistema, que muitos já pediram aqui e não coloquei pq o radius no suporta...

Responder à discussão

RSS

Parceiros

 

© 2014   Criado por Pedro Filho.

Badges - Divulgar  |  Relatar erro no site  |  Termos de serviço