El servidor RADIUS no llama a un script personalizado

El servidor RADIUS no llama a un script personalizado

Tengo un servidor RADIUS que en el pasado llamó a un script personalizado para la autenticación. En /etc/freeradius/sites-enabled/default, modifiqué las siguientes líneas para lograr esto:

authorize{
    update control{
        Auth-Type := `/usr/bin/php5 -f /usr/api/apilogin.php %{User-Name} %{User-Password}`
    }
}

Esto funcionó bien cuando usé PHP y repetí "Aceptar" o "Rechazar" en el archivo. Ahora tengo el problema de que tengo que usar un script Python. Creé un archivo apilogin.py que imprime "Aceptar" o "Rechazar" y lo llamé con:

authorize{
    update control{
        Auth-Type := `/usr/bin/python /usr/api/apilogin.py %{User-Name} %{User-Password}`
    }
}

Desafortunadamente, RADIUS siempre responde con un paquete Access-Reject. El archivo apilogin.py normalmente agrega un archivo de registro de texto con "Inicio de sesión exitoso/fallido para ...". Pero cuando quiero probar el inicio de sesión con radtest, el archivo de registro de texto no se agrega. Entonces creo que el guión no se llama en absoluto.

Al llamar al script a través de "/usr/bin/python /usr/api/apilogin.py testuser testpwd", el script imprime Aceptar, agrega el registro y sale según lo previsto.

No entiendo por qué esto funciona con PHP pero no con Python. ¿Echo en PHP es un comando más especial ya que existe una diferencia entre "eco" e "imprimir"?

¡Agradezco cualquier sugerencia!

información relacionada