running script at the time of address lease

Denis Laventure Denis_Laventure at uqac.ca
Mon Feb 14 13:53:20 UTC 2011


What about :

on commit { execute("command") }   ?

from dhcp-eval man page :

execute (command-path [, data-expr1, ... data-exprN]);

The execute statement runs an external command. The first argument is a string literal containing the name or path of the command to run. The other arguments, if present, are either string literals or data- expressions which evaluate to text strings, to be passed as command-line arguments to the command.

execute is synchronous; the program will block until the external command being run has finished. Please note that lengthy program execution (for example, in an "on commit" in dhcpd.conf) may result in bad performance and timeouts. Only external applications with very short execution times are suitable for use.

Passing user-supplied data to an external application might be dangerous. Make sure the external application checks input buffers for validity. Non-printable ASCII characters will be converted into dhcpd.conf language octal escapes ("777"), make sure your external command handles them as such.

It is possible to use the execute statement in any context, not only on events. If you put it in a regular scope in the configuration file you will execute that command every time a scope is evaluated.
I'm running ISC DHCPD v. 4.2.0

Denis

De : dhcp-users-bounces+denis_laventure=uqac.ca at lists.isc.org [mailto:dhcp-users-bounces+denis_laventure=uqac.ca at lists.isc.org] De la part de Jon Otterholm
Envoyé : 14 février 2011 06:20
À : Users of ISC DHCP
Objet : SV: running script at the time of address lease

The short answer is no, but there are ways to solve this.

I use the exec function in syslog to execute scripts upon lease/expire. You can configure dhcpd to do logging which includes the information you need (IP, MAC ...). Here is an example:

Dhcpd.conf
______
log-facility local6;

on commit { log(info, concat("commit", " ", binary-to-ascii(10, 8, ".", leased-address), " ", concat (
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 1, 1))),2),":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 2, 1))),2),":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 3, 1))),2),":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 4, 1))),2),":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 5, 1))),2),":",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware, 6, 1))),2)
), " ", "'", (option agent.circuit-id), "'"));
}

on expiry { log(info, concat("expiry", " ", binary-to-ascii(10, 8, ".", leased-address)));
}

on release { log(info, concat("expiry", " ", binary-to-ascii(10, 8, ".", leased-address)));
}
___________

Syslog.conf:
___
local6.debug                                    | exec /usr/bin/awk '$6=="commit"{system("/usr/scripts/commit.sh" " " $7 " " $8 " " $9)}'
local6.debug                                    | exec /usr/bin/awk '$6=="expiry"{system("/usr/scripts/release.sh" " " $7 " " $8 " " $9)}'
___

As you can see dhcpd will log to local6.debug, syslog pipes info to awk that filters info and sends it to a script together with necessary variables. In this example it sends IP, MAC and Option-82 to the script.

This runs on our FreeBSD-routers and it works really well. ~1000 customers/router and the lease-time is set to max 60min giving us about 2000 leases to handle per hour.

The advantage to this solution is the elimination of patches of dhcpd.

Hope this info helps, good luck.

//Jon

Från: dhcp-users-bounces+jon.otterholm=ide.resurscentrum.se at lists.isc.org [mailto:dhcp-users-bounces+jon.otterholm=ide.resurscentrum.se at lists.isc.org] För Tapan
Skickat: den 12 februari 2011 13:11
Till: dhcp-users at lists.isc.org
Ämne: running script at the time of address lease

Hi list,
 Is there any way to run a script from dhcpd after an address is assigned to a host ?

Regards,
Tapan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/dhcp-users/attachments/20110214/3f36d648/attachment.html>


More information about the dhcp-users mailing list