Boa tarde a todos pesquisando na internet achei esse tutorial do Danilo e gostaria de pedir ajuda para colocar em funcionamento no mikrotik v. 6.37.1 pois o pgcorte e pg aviso não está cadastrando pelo terminal quando cola o script. E nenhum está iniciando, fiz igual está no tutorial.
link:
Esse tutorial vai mostrar uma forma para Exportar os dados do MK-Auth e importar para o Mikrotik de forma automática.
Esse exemplo serve para que voce mantenha sempre de forma automática os seus clientes cadastrado no mikrotik.
Dessa forma se seu MK-Auth parar de funcionar, todos os clientes estarão cadastrados no mikrotik.
Podendo ativar eles pelo mikrotik.
Ou ate fazer essa ativação de forma automática, caso o MK-Auth pare de funcionar.
Para saber como ativar os clientes de forma automática acesse esse TUTORIAL.
Lembrando que deve ser feito essas regras abaixo primeiro.
E caso tenha com a MIKROTIKNET seu MKAUTH CLOUD, já configuramos em seu mikrotik essas regras.
Portanto você cliente da MIKROTIKNET não vai ficar sem funcionar seus clientes se o CLOUD parar. Apesar que dificilmente o CLOUD pare devido suas redundâncias.
Para mais informações do MK-AUTH CLOUD, acesse esse LINK.
Vamos as regras!
# SCRIPTS PARA MIKROTIK
# USANDO TOOL FETCH
IMPORTANTE: Em todos os scripts você precisa mudar somente os campos:
172.31.255.2 = Mude para o ip do seu MK-Auth
Key_api = Mude para a chave do MK-Auth.
Essa chave encontra-se no MK-Auth na abra Provedor -> dados da empresa -> Key API.
Segue imagem
Segue abaixo scrips que busca a informação do MK-Auth e importa para o mikrotik.
OBS: Apos mostrar alguns exemplos de scripts vou estar mostrando como fazer de forma automática a execução desses scripts.
Em qualquer scripts abra o mikrotik, copie o script que escolheu ja com as alterações de ip e key e cole no New Terminal do Mikrotik.
Vai ser criado duas regras no mikrotik:
System -> scheduler
System -> script
Scrpits para PPPE
Copie e cole uma regra de cada vez no terminal do mikrotik
/system scheduler add interval=45m name=ler_pppoe on-event=":execute script=ler_pppoe;"
/system script add name=ler_pppoe source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"https://\$IPMKAUTH/api/mkt_pppoe.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_pppoe.php dst-path=mkt_pppoe.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_pppoe.rsc] != \"\" ) do={\r\ \n :log warning \"Importando PPPoE\";\r\ \n /import mkt_pppoe.rsc;\r\ \n /file remove mkt_pppoe.rsc;\r\ \n}\r\ \n"
Script para Hotspot:
/system scheduler add interval=45m name=ler_hotspot on-event=":execute script=ler_hotspot;"
/system script add name=ler_hotspot source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"https://\$IPMKAUTH/api/mkt_hotspot.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_hotspot.php dst-path=mkt_hotspot.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_hotspot.rsc] != \"\" ) do={\r\ \n :log warning \"Importando HotSpot\";\r\ \n /import mkt_hotspot.rsc;\r\ \n /file remove mkt_hotspot.rsc;\r\ \n}\r\ \n"
Script para DHCP:
/system scheduler add interval=45m name=ler_dhcp on-event=":execute script=ler_dhcp;"
/system script add name=ler_dhcp source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"http://\$IPMKAUTH/api/mkt_dhcp.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_dhcp.php dst-path=mkt_dhcp.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_dhcp.rsc] != \"\" ) do={\r\ \n :log warning \"Importando DHCP\";\r\ \n /import mkt_dhcp.rsc;\r\ \n /file remove mkt_dhcp.rsc;\r\ \n}\r\ \n"
Script para IP:
/system scheduler add interval=15m name=ler_ip on-event=":execute script=ler_ip;"
/system script add name=ler_ip source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"http://\$IPMKAUTH/api/mkt_ip.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_ip.php dst-path=mkt_ip.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_ip.rsc] != \"\" ) do={\r\ \n :log warning \"Importando enderecos IP\";\r\ \n /import mkt_ip.rsc;\r\ \n /file remove mkt_ip.rsc;\r\ \n}\r\ \n"
Script ARP:
/system scheduler add interval=15m name=ler_arp on-event=":execute script=ler_arp;"
/system script add name=ler_arp source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"http://\$IPMKAUTH/api/mkt_arp.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_arp.php dst-path=mkt_arp.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_arp.rsc] != \"\" ) do={\r\ \n :log warning \"Importando ARP\";\r\ \n /import mkt_arp.rsc;\r\ \n /file remove mkt_arp.rsc;\r\ \n}\r\ \n"
Script Queues:
/system scheduler add interval=15m name=ler_queues on-event=":execute script=ler_queues;"
/system script add name=ler_queues source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"http://\$IPMKAUTH/api/mkt_queues.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_queues.php dst-path=mkt_queues.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_queues.rsc] != \"\" ) do={\r\ \n :log warning \"Importando QUEUES\";\r\ \n /import mkt_queues.rsc;\r\ \n /file remove mkt_queues.rsc;\r\ \n}\r\ \n"
Script Wifi:
/system scheduler add interval=45m name=ler_wifi on-event=":execute script=ler_wifi;"
/system script add name=ler_wifi source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"https://\$IPMKAUTH/api/mkt_wifi.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_wifi.php dst-path=mkt_wifi.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_wifi.rsc] != \"\" ) do={\r\ \n :log warning \"Importando WIFI\";\r\ \n /import mkt_wifi.rsc;\r\ \n /file remove mkt_wifi.rsc;\r\ \n}\r\ \n"
No Caso os clietnes que estão com PGCorte e PGAviso, deve fazer de forma separata.
Segue:
Script PGCorte:
/system scheduler add interval=45m name=ler_wifi on-event=":execute script=ler_wifi;"
/system script add name=ler_wifi source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\"; \r\ \n:global KEY \"key_api\"; \r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"https://\$IPMKAUTH/api/mkt_wifi.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_wifi.php dst-path=mkt_wifi.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_wifi.rsc] != \"\" ) do={\r\ \n :log warning \"Importando WIFI\";\r\ \n /import mkt_wifi.rsc;\r\ \n /file remove mkt_wifi.rsc;\r\ \n}\r\ \n"
Script PGAviso:
/system scheduler add interval=30m name=ler_pgaviso on-event=":execute script=ler_pgaviso;"
/system script add name=ler_pgaviso source="#===============================\r\ \n:global IPMKAUTH \"172.31.255.2\";\r\ \n:global KEY \"key_api\";\r\ \n:global RAMAL \"todos\";\r\ \n:global done \"\";\r\ \n/tool fetch mode=http url=\"http://\$IPMKAUTH/api/mkt_pgaviso.php\\\?key=\$KEY&ramal=\$RAMAL\" src-path=mkt_pgaviso.php dst-path=mkt_pgaviso.rsc;\r\ \n:set done \"true\";\r\ \n\r\ \n:if ( [/file find name=mkt_pgaviso.rsc] != \"\" ) do={\r\ \n :log warning \"Importando PgAviso\";\r\ \n /import mkt_pgaviso.rsc;\r\ \n /file remove mkt_pgaviso.rsc;\r\ \n}\r\ \n" /system scheduler add interval=30s name=rm_pgaviso on-event=":execute script=rm_pgaviso;" /system script add name=rm_pgaviso source="#===============================\r\ \n:foreach ip in=[/ip firewall address-list find list=\"pgaviso\"] do={\r\ \n /ip firewall address-list remove \$ip;\r\ \n}\r\ \n"
Pronto!
Esses são alguns scripts posiveis.
Na medida que tiver mais vou adicionando.
Segue imagens do mikrotik como deve ficar.
Pronto.
Seu script esta pronto e ja configurado de forma automática para buscar os dados do MK-auth e importar para o files do mikrotik.
Também vai adicionar de forma automática os dados no mikrotik conforme o script escolhido.
Importante: Para que funcione, deve esta criado no POOL do mikrotik os nomes que serão criados no profiles do mikrotik pelos scripts.
Faça o seguinte:
Vai em IP -> POOL
Adicione uma regra e nos campos:
Name: Local-1
Addresses: 192.168.0.10-192.168.0.254 (ou a faixa de ip que desejar)
Crie mais um:
Name: Remoto-1
Address: 192.168.1.10-192.168.1.254
Segue imagem com exemplo:
Pronto.
Agora você tem regras que captura informações do mk-auth e joga para seu mikrotik de forma automática.
E caso queira que o mikrotik monitore seu mk-auth e caso o mk-auth de problema ativar de forma automática os clientes pode seguir esse TUTORIAL.
Respostas
Pedro vc pode ajudar a fazer esse tutorial funcionar 100%?
Parabéns e o que falta para funcionar ?
RODRIGO BERGAMIM VIEIRA disse:
Ele funciona sim, utilizo script parecidos utilizando IPxMAC, só que as versões no Mikrotik vai mudando e os script são tratados diferente pelo Mikrotik, tem que ir fazendo umas alterações. mas o API do mk-Auth funciona redondinho, eu tenho um problema com este script que:
1 - Exporta do MK-AUTH a tabela DHCP Leases do Ramal e salva em um Arquivo "mkt_dhcp.rsc"
2 - Exclue todos os IP/Mac Staticos que contenha a Observaçao "Cliente"
3- Executa o arquivo "mkt_dhcp.rsc" baixado anteriormente.
#===============================
:global IPMKAUTH "172.31.255.2";
:global KEY "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
:global RAMAL "172.31.255.1";
:global done "";
/tool fetch mode=http url="http://$IPMKAUTH/api/mkt_dhcp.php\?key=$KEY&ramal=$RAMAL" src-path=mkt_dhcp.php dst-path=mkt_dhcp.rsc;
:set done "true";
:if ( [/file find name=mkt_dhcp.rsc] != "" ) do={
:log warning "Importando DHCP";
/ip dhcp-server lease remove [/ip dhcp-server lease find comment~"cliente"];
/import mkt_dhcp.rsc;
/file remove mkt_dhcp.rsc;
}
O Problema que estou tendo é que em versões anteriores a 6.6 ele roda de boa, mas nas versões que já testei (6.37x, 6.38.x e 6.39.1 tenho que executar 2 vezes para fazer o trabalho dele. é como que baixa o arquivo mas não da tempo de terminar de baixá-lo, queria colocar uma Pausa no script entre o processo de baixar e executar o arquivo .src. Mas não sei como fazer isso...
Resolvi dividindo o script em 2 parte. Ficou assim:
no scheduler primeiro executa o Script ler_dhcp1 e depos de 5s executa o Script ler_dhcp2.
legal...
Dario M Adaro disse:
aqui nao funcionou.... alguem teve susseço?
Pedro Filho disse:
Esses script vai copiar todos os meus clientes no mkauth e importar pra secret no Mikrotik?
E desta forma os clientes vão se conectar localmente no Mikrotik?