과거에 인증을 위해 사용자 정의 스크립트를 호출한 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 스크립트를 사용해야 한다는 문제가 있습니다. "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로 로그인을 테스트하려고 하면 textlogfile이 추가되지 않습니다. 그래서 스크립트가 아예 호출되지 않는 것 같아요.
"/usr/bin/python /usr/api/apilogin.py testuser testpwd"를 통해 스크립트를 호출하면 스크립트는 Accept를 인쇄하고 로그를 추가한 후 의도한 대로 종료됩니다.
왜 이것이 PHP에서는 작동하지만 Python에서는 작동하지 않는지 이해할 수 없습니다. "echo"와 "print" 사이에 차이가 있기 때문에 PHP의 echo가 더 특별한 명령입니까?
어떤 힌트라도 감사하겠습니다!