I am using freeradius 3.0.12 on debian jessie. I have custom 'control' variable mapped to user distinguishedName attribute (it is in UTF-8) in Active Directory: ldap { update { control:ms-distinguishedName := 'distinguishedName' } I want to convert it to custom format and log to postauth table: authorize { update control { &ms-publishedAt := "%{exec:/etc/freeradius/dn2ou.py %{control:ms-distinguishedName}}" } In script I got UTF-8 string from freeradius, but I can't understand in what encoding I should return result. I tried different variants without success. Simple bash script like: echo $@ shows following debug: (2) update control { (2) Executing: /etc/freeradius/test.sh CN\=Сотрудник\ ХХХ,OU\=ОК\ \(Р-1\),OU\=орг,DC\=xx,DC\=xx,DC\=xx,DC\=xx: (2) Program returned code (0) and output 'CN\=Сотрудник ХХХ,OU\=ОК \(Р-1\),OU\=орг,DC\=xx,DC\=xx,DC\=xx,DC\=xx' (2) EXPAND %{exec:/etc/freeradius/ivc/test.sh %{control:ms-distinguishedName}} (2) --> CN\= ,OU\= \( -1\),OU\= ,DC\=xx,DC\=xx,DC\=xx,DC\=xx (2) &ms-publishedAt := CN\= ,OU\= \( -1\),OU\= ,DC\=xx,DC\=xx,DC\=xx,DC\=xx (2) } # update control = noop So it get output as UTF-8 string, but next EXPAND vanishes non-ascii symbols to spaces. Is it possible to get 'exec' module output with non ascii characters?