Eu tenho um servidor RADIUS que no passado chamava um script personalizado para autenticação. No /etc/freeradius/sites-enabled/default, modifiquei as seguintes linhas para arquivar isso:
authorize{
update control{
Auth-Type := `/usr/bin/php5 -f /usr/api/apilogin.php %{User-Name} %{User-Password}`
}
}
Isso funcionou bem quando usei PHP e repeti "Aceitar" ou "Rejeitar" no arquivo. Agora tenho o problema de usar um script Python. Criei um arquivo apilogin.py que imprime "Aceitar" ou "Rejeitar" e chamei-o com:
authorize{
update control{
Auth-Type := `/usr/bin/python /usr/api/apilogin.py %{User-Name} %{User-Password}`
}
}
Infelizmente, o RADIUS sempre responde com um pacote Access-Reject. O arquivo apilogin.py normalmente anexa um arquivo de log de texto com "Login bem-sucedido/falha para ...". Mas quando quero testar o login com o radtest, o arquivo de log de texto não é anexado. Então acho que o script não é chamado.
Ao chamar o script por meio de "/usr/bin/python /usr/api/apilogin.py testuser testpwd", o script imprime Aceitar, anexa o log e sai conforme o esperado.
Não entendo por que isso funciona com PHP, mas não com Python. O echo no PHP é um comando mais especial, já que existe uma diferença entre “echo” e “print”?
Agradeço qualquer dica!