2016-10-06 11 views
0

Я знаю, что может оказаться перед невозможной миссией. Я хочу, чтобы radiusd записывал каждый Mac, полученный в Acces-Request, для дальнейшего отказа в доступе к этим MAC-адресам.Unlang пишите в файл FreeRADIUS

Я знаю, что файл политики написано в unlang, плохие новости в том, что radiusd не имеет права на запись на любом из конф файлов ...

Во всяком случае, был кто способен Writting в файл в ПОЛИТИКА ОБРАБОТКИ FreeRADIUS?

То, что я хочу, чтобы достичь было бы что-то вроде этого:

raddb/сайты-доступные/по умолчанию

authorize { 
    rewrite_calling_station_id 
    unauthorized_macs 
    if(ok) { 
    reject   
    } 
    else { 
    update control { 
     Auth-Type := Accept 
    } 
    GET MAC FROM CALLIN_STATION_ID ATTRIBUTE 
    WRITE THIS F***ING MAC TO unauthorized_macs FILE 
} 

}

Благодаря Арран, я мог бы решить эту проблему следующим путь:

authorize { 
    rewrite_calling_station_id 
    authMac 
    if(ok) { 
    reject 
    } 
    else { 
    linelog 
    update control { 
     Auth-Type := Accept 
    } 
} 

}

Где linelog настраивается следующим образом: raddb/модов с поддержкой/linelog

linelog { 
    filename = /path/to/hell/authMac 
    format = "%{Calling-Station-ID}" 
    } 

ответ

0
update request { 
    Tmp-String-0 := `echo "%{Calling-Station-ID}" >> "/path/to/f___ing_unauthorized_macs_file"` 
} 

Там также модуль linelog который был бы лучше в> = v3.0.x как это реализует внутреннюю блокировку (в дополнение к стаду), чтобы предотвратить чередование строк.

Для примера см. /etc/raddb/mods-available/linelog.

+0

, и вам может потребоваться обернуть команду в bash -c, не помню специфику использования команд оболочки с помощью exec. –

Смежные вопросы