Running an external script

Jonathan Gazeley jonathan.gazeley at bristol.ac.uk
Thu Mar 12 11:33:15 CET 2009


In my my inner-tunnel virtual server, authorize section, I have some 
code like this, for sorting users into vlans:

        update control {
                Tunnel-Type := "VLAN"
                Tunnel-Medium-Type := "IEEE-802"
                Tunnel-Private-Group-Id := 
`/usr/local/etc/raddb/scripts/userVlan.pl %{User-Name} 2>/dev/null`
        }
        update reply {
                Tunnel-Type := "VLAN"
                Tunnel-Medium-Type := "IEEE-802"
                Tunnel-Private-Group-Id := 
`/usr/local/etc/raddb/scripts/userVlan.pl %{User-Name} 2>/dev/null`
        }

This was put together in a hurry and is pretty undesirable, as the perl 
script (which queries a slow database) is executed twice. Of course in 
any other language, one would simply save the return value of the script 
in a variable and reference it twice - but quoting "man unlang": " Note 
that unlike C, there is no way to declare variables".

So is there a way to store the return value such that I can execute the 
script only once?

Or how about something like:

        update control {
                Tunnel-Type := "VLAN"
                Tunnel-Medium-Type := "IEEE-802"
                Tunnel-Private-Group-Id := 
`/usr/local/etc/raddb/scripts/userVlan.pl %{User-Name} 2>/dev/null`
        }
        update reply {
                Tunnel-Type := "VLAN"
                Tunnel-Medium-Type := "IEEE-802"
                Tunnel-Private-Group-Id :=  
%{control.Tunnel-Private-Group-Id}
        }

Cheers,
Jonathan

----------------------------
Jonathan Gazeley
Systems Support Specialist
ResNet | Wireless & VPN Team
Information Services
University of Bristol
----------------------------




More information about the Freeradius-Users mailing list