Zaktualizuj plik
              /etc/dhcpd.confon commit {
execute("/sbin/skrypty/dhcp_update_ip", "commit", ClientIP, ClientMac, ClientName);
}
on release {
execute("/sbin/skrypty/dhcp_update_ip", "release", ClientIP, ClientMac, ClientName);
}
on expiry {
execute("/sbin/skrypty/dhcp_update_ip", "expiry", ClientIP, ClientMac, ClientName);
}
            Stwórz skrypt php do przekazywania żądań do serwera procesy5
                /sbin/skrypty/dhcp_update_ip.php#!/usr/bin/env php
<?php
######################################################
# Skrypt aktualizujacy adresu IP w systemie PROCESY5 #
# ID zasobu - 23966                                  #
# Bzyk @ 2016-08-23                                  #
######################################################
function addZero($s) {
	return (strlen($s)==1?"0":"").$s;
}
function tuneMac($mac) {
	return strtoupper(implode(":", array_map("addZero", explode(":", $mac))));
}
$ACTION = $_SERVER[argv][1];
$IP = $_SERVER[argv][2];
$MAC = tuneMac($_SERVER[argv][3]);
#$MAC = wordwrap(strtoupper(bin2hex($_SERVER[argv][3])), 2 ,":", true);
$HOST = $_SERVER[argv][4];
#$ACTION = "commit";
#$IP = '192.168.1.14';
#$MAC = 'B4:8B:19:8A:36:5A';
#$MAC='ac:87:a3:03:3b:9a';
#$HOST = "test-host";
function error($s,$die) {
	file_put_contents("/tmp/dhcp-php.log",$s,FILE_APPEND);
	if ($die) die();
}
if (!$MAC) error("===\n${IP} - MAC error\n",true);
function writeLog($table,$transaction,$result) {
	file_put_contents("/tmp/dhcp-php.log","===\n${table} @ " . date('Y-m-d H:i:s', time()) . "\n---\n${transaction}\n---\n${result}\n",FILE_APPEND);
}
$seProto = "https";
$seHost = "biuro.biall-net.pl";
$seLogin = "dhcp_update_ip";
$sePass = "$$$$$$$$";
$T_NETWORK_SERVER = 'adm.chelmnet.pl';
$transactionHead = '<Transaction
  xmlns="http://www.opengis.net/wfs"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  version="1.0.0"
  service="WFS"
  xmlns:p5_default_db="'.$seProto.'://'.$seHost.'/wfs/default_db"
  xmlns:gml="http://www.opengis.net/gml">
  <Insert xmlns="http://www.opengis.net/wfs">
';
$transactionTail = '  </Insert>
</Transaction>';
$updateUrl = "${seProto}://${seLogin}:${sePass}@${seHost}/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:3003&";
// Aktualizacja tabeli DEVICES
$TABLE = "DEVICES";
$filter = "
<GetFeature xmlns=\"http://www.opengis.net/wfs/2.0\"
  xmlns:p5_default_db=\"${seProto}://${seHost}/wfs/default_db\"
  xmlns:ogc=\"http://www.opengis.net/ogc\"
  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
  service=\"WFS\"
  version=\"2.0.2\"
  xsi:schemaLocation=\"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd\">
  <ogc:Filter>        
    <ogc:And>
      <ogc:PropertyIsEqualTo>
        <ogc:PropertyName>S_HW</ogc:PropertyName>
        <ogc:Literal>${MAC}</ogc:Literal>
      </ogc:PropertyIsEqualTo>
      <ogc:Not>
        <ogc:PropertyIsEqualTo>
          <ogc:PropertyName>A_STATUS</ogc:PropertyName>
          <ogc:Literal>DELETED</ogc:Literal>
        </ogc:PropertyIsEqualTo>
      </ogc:Not>
    </ogc:And>
  </ogc:Filter>
</GetFeature>";
#$postdata = array('Filter' => $filter);
#$opts = array('http' => array('method' => 'POST', 'content' => http_build_query($postdata)));
$opts=array('http'=>array('method'=>'POST','header'=> "Content-type: application/xml\nContent-Length: " . strlen($filter) . "\r\n",'content'=>$filter));
$context = stream_context_create($opts);
$url = "${seProto}://${seLogin}:${sePass}@${seHost}/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:${TABLE}&propertyName=ID,S_IP";
$result = @file_get_contents($url, false, $context) or error("===\nAPI error\n",true);
$xml = simplexml_load_string($result);
$findID = $xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:ID");
$findIP = $xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:S_IP");
$DEVICES_ID = (int) $findID[0][0];
$DEVICES_IP = $findIP[0][0];
$xmlns = 'xmlns="'.$seProto.'://'.$seHost.'/wfs/default_db/'.$TABLE.'"';
if ($DEVICES_ID && ($IP != $DEVICES_IP)) {
	$transactionBody = "      <ID ${xmlns}>${DEVICES_ID}</ID>\n";
	$transactionBody.= "      <S_IP ${xmlns}>${IP}</S_IP>\n";
	$transaction = $transactionHead . "    <${TABLE} ${xmlns}>\n" . $transactionBody . "    </${TABLE}>\n" . $transactionTail;
	$opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/xml\nContent-Length: " . strlen($transaction) . "\n", 'content' => $transaction));
	$context = stream_context_create($opts);
	$result = @file_get_contents($updateUrl, false, $context) or error("***\nAPI error\n",false);
	writeLog($TABLE,$transaction,$result);
#	file_put_contents("/tmp/dhcp-php.log","===\nDEVICES\n---\n${transaction}\n---\n${result}\n",FILE_APPEND);
#echo $transaction."\n";
}
// Aktualizacja tabeli DEVICES_HW
$TABLE = "DEVICES_HW";
$filter = "
<GetFeature xmlns=\"http://www.opengis.net/wfs/2.0\"
  xmlns:p5_default_db=\"${seProto}://${seHost}/wfs/default_db\"
  xmlns:ogc=\"http://www.opengis.net/ogc\"
  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
  service=\"WFS\"
  version=\"2.0.2\"
  xsi:schemaLocation=\"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd\">
  <ogc:Filter>        
    <ogc:And>
      <ogc:PropertyIsEqualTo>
        <ogc:PropertyName>S_HW</ogc:PropertyName>
        <ogc:Literal>${MAC}</ogc:Literal>
      </ogc:PropertyIsEqualTo>
      <ogc:PropertyIsEqualTo>
        <ogc:PropertyName>T_NETWORK_SERVER</ogc:PropertyName>
        <ogc:Literal>${T_NETWORK_SERVER}</ogc:Literal>
      </ogc:PropertyIsEqualTo>
    </ogc:And>
  </ogc:Filter>
</GetFeature>";
#$postdata = array('Filter' => $filter);
#$opts = array('http' => array('method' => 'POST', 'content' => http_build_query($postdata)));
$opts=array('http'=>array('method'=>'POST','header'=> "Content-type: application/xml\nContent-Length: " . strlen($filter) . "\n",'content'=>$filter));
$context = stream_context_create($opts);
$url = "${seProto}://${seLogin}:${sePass}@${seHost}/SE/version-git/wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:${TABLE}&propertyName=ID,S_IP,A_STATUS,DEVICES_ID";
$result = @file_get_contents($url, false, $context) or error("===\nAPI error\n",true);
$xml  =simplexml_load_string($result);
$findID = @$xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:ID");
$findIP = @$xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:IP");
$findA_STATUS = @$xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:A_STATUS");
$findDEVICES_ID = @$xml->xpath("/wfs:FeatureCollection/gml:featureMember/p5_default_db:${TABLE}/p5_default_db:DEVICES_ID");
$DEVICES_HW_ID = (int) $findID[0][0];
$DEVICES_HW_IP = $findIP[0][0];
$DEVICES_HW_A_STATUS = $findA_STATUS[0][0];
$DEVICES_HW_DEVICES_ID = (int) $findDEVICES_ID[0][0];
$transactionBody = "";
$xmlns = 'xmlns="'.$seProto.'://'.$seHost.'/wfs/default_db/'.$TABLE.'"';
$ACTIONS = array(
	"commit" => array("status" => "NORMAL", "desc" => "Przyznano adres IP"),
	"release" => array("status" => "OFF_SOFT", "desc" => "Odlaczono urzadzenie"),
	"expiry" => array("status" => "OFF_SOFT", "desc" => "Uplynal czas dzierzawy")
);
if ($DEVICES_HW_ID) $transactionBody .= "      <ID ${xmlns}>${DEVICES_HW_ID}</ID>\n";
else {
	$transactionBody .= "      <S_HW ${xmlns}>${MAC}</S_HW>\n";
	$transactionBody .= "      <T_NETWORK_SERVER ${xmlns}>${T_NETWORK_SERVER}</T_NETWORK_SERVER>\n";
}
$transactionBody .= "      <S_IP ${xmlns}>${IP}</S_IP>\n";
$transactionBody .= "      <A_STATUS ${xmlns}>".$ACTIONS[$ACTION]["status"]."</A_STATUS>\n";
$transactionBody .= "      <A_STATUS_INFO ${xmlns}>".$ACTIONS[$ACTION]["desc"]."</A_STATUS_INFO>\n";
if ($ACTION == "commit") $transactionBody .= "      <S_HOST ${xmlns}>".$HOST."</S_HOST>\n";
if ($DEVICES_ID) $transactionBody .= "      <DEVICES_ID ${xmlns}>${DEVICES_ID}</DEVICES_ID>\n";
$transaction = $transactionHead . "    <${TABLE} ${xmlns}>\n" . $transactionBody . "    </${TABLE}>\n" . $transactionTail;
$opts = array('http' => array('method' => 'POST', 'header' => "Content-type: application/xml\nContent-Length: " . strlen($transaction) . "\n", 'content' => $transaction));
$context = stream_context_create($opts);
$result = @file_get_contents($updateUrl, false, $context) or error("***\nAPI error\n",false);
writeLog($TABLE,$transaction,$result);
#file_put_contents("/tmp/dhcp-php.log","===\nDEVICES_HW\n---\n${transaction}\n---\n${result}\n",FILE_APPEND);
#echo $transaction."\n";
?>