On commit/release isc-dhcp-server

bonjour,
j’essaye d’executer un script quand le serveur dhcp donne un bail a un client avec on commit . j’ai pas l’impression que ca fonctionne.
dhcpd.conf :

default-lease-time 600;
max-lease-time 7200;
log-facility local7;
ddns-update-style none;

on commit {log('===================test commit==========================');}
on release {log('===================test commit==========================');}

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.2 192.168.0.100;
  option routers 192.168.0.1;

}

j’ai essayé en le mettant dans le subnet , pareil … (j’y ai ajouteé la cmd execute() mais marche pas …)
avez vous deja utilisé cette option ?

Voici un exemple:

# Global instances, should be used if we don't have anything better
on commit { log(info, concat("global commit: ", option dhcp6.client-id)); }
on expiry { log(info, concat("global expiry: ", option dhcp6.client-id)); }
on release { log(info, concat("global release: ", option dhcp6.client-id)); }

en regardant, il doit y avoir un espace entre le « ; » et le « } » final.
le test serait mieux dans des " plutot que des ’

J’ai réussi a faire fonctionner ca en partie au boulot avant de rentrer. Je posterai la partie fonctionnelle quand ce sera ok. Un script bash passe sans pb par contre un python moins …

C’est tres mal documenté sur isc cette fonction

Pour le python:

on commit {
    set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
    set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
    execute("/usr/sbin/test.py", "commit", ClientIP, ClientMac);
}

A terme je compte utiliser cette fonction pour faire la partie DDNS, car malheureusement, seul le DNS V4 se met à jour, la partie IPv6 ne fonctionne pas, pour des questions de DUID très clairement.

Voila tout fonctionne.
pour le python j’avais d’abord une faute de frappe sur le shebang.
Ensuite le script est long car il fait du telnet dessus pour flash du firmware. MAIS ! il faut savoir que le DHCP ne fait pas le DHCPACK tant que le script ne lui a pas rendu la main …

donc je passe par un script shell qui récupère les arguments et lance le script en python en tache de fond avec le « & » a la fin de la commande.
mettre un & en dernier argument dans « execute » ne fonctionne pas non plus.

 default-lease-time 6000;
    max-lease-time 7200;
    log-facility local7;
    ddns-update-style none;

    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.200 192.168.0.209;
      option routers 192.168.0.1;
      option domain-name-servers 172.25.253.161, 172.25.253.162;
      option domain-name"xxxxxxxxxxxxxx";
      on commit {
      log("-_-_-_-_-_-_-_-_-_- Debut Commit -_-_-_-_-_-_-_-_-_-_-");
      set clientIP = binary-to-ascii(10, 8, ".", leased-address);
      set clientMAC = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
      set vendor-string = concat("\"", option vendor-class-identifier,"\"");
      execute("/home/reseau/onCommit.sh",clientIP, clientMAC, vendor-string);
      log("-_-_-_-_-_-_-_-_-_- Fin Commit -_-_-_-_-_-_-_-_-_-_-");
       }
    }