Bom dia,
Sei que este tópico é bem batido por aqui, porém estou precisando de idéias de como solucionar esse problema.
Tenho o script funcional no netwatch
Se o mk-auth ficar OFF importa planos para o profile e clientes para o secret no mikrotik.
Quando mk-auth fica ON novamente eu removo os profile e secret. Também coloquei para desconectar os clientes que subiram pelo mikrotik /ppp active remove [find comment=mkauth]
O problema que o mk-auth antes de cair deve constar os clientes como conectados e ao retornar não permite a reconexão dos mesmos, fica dando radius time out e só funciona se vc reparar o cliente.
Sugestão de propostas de solução:
- Reparar todos os clientes ? (mais prático e rápido mas vou desconectar clientes q não foram afetados desnecessariamente ?) Como fazer isso ? botar pro script se conectar via ssh no mk-auth e executar via linha de comando o comando de reparar ? (/opt/php5/bin/php -q /opt/mk-auth/scripts/reparar.php)
- Dar um print no /ppp active e procurar por comment=mk-auth pra coletar somente os q conectaram quando o mk-auth esteve off ? Como reparar automaticamente o cliente específico ? via api ?
No momento eu comentei essa opção de remover os clientes q estão com o comment=mkauth do ppp active e aí eu olho reparo e forço eles reconectarem ou então olho pelo pool quem conectou e pegou o ip da pool enquanto o mk-auth pra reparar e remover manualmente ... mas quero automatizar isso.
Ao encontrar a melhor solução eu postarei os scripts.
Respostas
Uma solucao seria, criar um script php no mkauth como addons, e setar os clientes no bd do radius com horario de termino da conexao, esses clientes seriam os que estao no mikrotik logados de forma local via secrets, o mikrotik iria enviar o nome de usuario pppoe pra esse script no mkauth setando esses clientes no radius com horario de termino de conexao.
Me chama no whatsapp 15 99621-3328 sou programador e tenho provedor tbm, ai nos ajudamos
Acompanhado de muito interesse.
obrigado amigo pela troca de informações.
Eu usava no script o comando: /ppp active remove [find comment=mkauth] para forçar a desconexão porém fica dando radius time out pq imagino q a conexão fique fantasma no banco de dados do mk-auth / radius.
Por enquanto, deixei conectado e apenas listo quem precisa reparar com o comando: /ppp active print where comment=mkauth para depois ter q reparar manualmente. Pensei até em fazer um loop / foreach e mandar enviar um log alertando cada name para reparar manualmente.
A equipe do suporte sabe informar se a api tem como fazer uma chamada para reparar todos os clientes ? ou apenas um cliente ?
sobe um outro servidor mk-auth para backup amigo e caso o principal parar vc só sobe o ip do servidor de backup na sua rb em radios é uma ideia uso assim
obrigado pela idéia, mas acredito que é um desperdício de recurso vc ter dois mk-auth fora questões de conflito ... mas prefiro ir pelo lado de que o mk-auth ficar off é um fato atípico, q pouco ocorre, mas pode ocorrer e essa solução de vc subir temporariamente no mikrotik o backup dos clientes parece a mais adequada, portanto vou seguir nesta linha ... mas é sempre bom ouvir outras opiniões e soluções.
Para finalizar só falta fazer o mikrotik se conectar no mk-auth via ssh para executar o comando de reparar os clientes.
Para isso alterei o arquivo /etc/mksys/mklogin.sh para remover aquela tela padrão do mk-auth já caindo direto no bash.
Mas o script do mikrotik não conecta via ssh passando a senha, por segurança exige-se cadastrar as chaves de acesso para logar sem senha https://wiki.mikrotik.com/wiki/Manual:System/SSH_client
Segui os seguintes tutorias, mas mesmo assim continua exigindo a senha:
https://monovm.com/blog/how-to-ssh-on-linux-via-mikrotik-winbox/
https://forum.mikrotik.com/viewtopic.php?t=152957
Alguém conseguiu cadastrar as chaves no mikrotik para acessar um servidor linux (no caso o mk-auth) via ssh sem precisar passar a senha ?