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 並在文件中回顯“接受”或“拒絕”時,這工作得很好。現在我遇到的問題是我必須使用Python 腳本。我創建了一個 apilogin.py 文件,它打印“接受”或“拒絕”並使用以下命令調用它:

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

不幸的是,RADIUS 總是回覆一個訪問拒絕包。 apilogin.py 檔案通常會附加一個帶有「成功/失敗登入...」的文字日誌檔案。但是當我想用 radtest 測試登入時,文字日誌檔案不會被附加。所以我認為腳本根本沒有被呼叫。

當透過「/usr/bin/python /usr/api/apilogin.py testuser testpwd」呼叫腳本時,腳本會列印 Accept,附加日誌並按預期退出。

我不明白為什麼這適用於 PHP 而不適用於 Python。 PHP 中的 echo 是一個更特殊的指令嗎,因為「echo」和「print」之間有差異?

我很感激任何提示!

相關內容