У меня есть сервер 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 всегда отвечает пакетом Access-Reject. Файл apilogin.py обычно добавляет текстовый файл журнала с надписью «Успешный / Неудачный вход для ...». Но когда я хочу проверить логин с помощью radtest, файл текстового журнала не добавляется. Так что я думаю, что сценарий вообще не вызывается.
При вызове сценария через "/ usr / bin / python /usr/api/apilogin.py testuser testpwd" сценарий печатает Accept, добавляет журнал и завершает работу по назначению.
Я не понимаю, почему это работает с PHP, но не с Python. Является ли echo в PHP более специальной командой, поскольку существует разница между «echo» и «print»?
Ценю любые подсказки!