RADIUS 服务器不调用自定义脚本

RADIUS 服务器不调用自定义脚本

我确实有一个 RADIUS 服务器,它过去调用自定义脚本进行身份验证。在 /etc/freeradius/sites-enabled/default 中,我修改了以下几行以实现这一点:

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

当我使用 PHP 并在文件中回显“Accept”或“Reject”时,此方法运行良好。现在我遇到一个问题,我必须使用 Python 脚本。我创建了一个打印“Accept”或“Reject”的 apilogin.py 文件,并使用以下命令调用它:

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

不幸的是,RADIUS 总是用 Access-Reject 包回复。apilogin.py 文件通常会附加一个文本日志文件,其中包含“成功/失败的登录...”。但是当我想使用 radtest 测试登录时,文本日志文件并没有被附加。所以我认为该脚本根本没有被调用。

通过“/usr/bin/python /usr/api/apilogin.py testuser testpwd”调用脚本时,脚本打印“Accept”,附加日志并按预期退出。

我不明白,为什么这在 PHP 中有效,而在 Python 中无效。由于“echo”和“print”之间存在差异,PHP 中的 echo 是否是一个更特殊的命令?

我很感激任何提示!

相关内容