Это используется при задании авторизационных скриптов.
Из источника
http://www.bog.pp.ru/work/tacacs.html"Программа дополнительной авторизацией до tacacs. Сервер доступа передает tacacs+ серверу пакет запроса (поля пакета запроса можно передавать программе предварительной авторизации в
виде параметров) и набор AV пар (передаются на стандартный ввод программме по одной на строке в формате имя=значение и ожидаются на стандартном выводе программы - пробелы
запрещены!). Вызов программы оформляется так:
user = имя {
= =before autorization "имя-программы поле-запроса ..."
= =...
}"
...
Коды возврата: 0 - авторизация разрешена, AV-пары не передаются на NAS; 1 - авторизация запрещена; 2 - авторизация разрешена, модифицированные AV-пары передаются на NAS со статусом
AUTHOR_STATUS_PASS_REPL, дальнейшая обработка запроса не делается (включая как ту, что определена конфигурацией tacacs+ сервера, так и программу пост-обработки), нельзя использовать
при авторизации комманды; 3 - авторизация запрещена, но все AV-пары передаются на NAS, =а stderr помещается в поле server-msg и также передается на NAS"
При использовании в скрипте команды "exit 2" всё работает нормально: D-Link обрабатывает атрибуты, переданные скриптом. Но если указать "exit 1", то коммутатор всесто reject'a
просто игнорирует посылаемую ему команду и авторизует согласно конфигурации tacacs+ сервера. Можно было бы сказать, что проблема не в самом оборудовании D-Link, но устройства других вендоров работают при той же конфигурации корректно и запрещают доступ.