O servidor RADIUS não chama um script personalizado

O servidor RADIUS não chama um script personalizado

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!

informação relacionada