Dhcpd lease time

From SME Server
Jump to: navigation, search
Edit-find-replace.png Not reviewed:
This howto or contrib has not been reviewed and might contain code that could harm your installation. For more information on the review process have a look at the Development Review page.

Display the dhcp lease

according in bugzilla:2641 you have a script which display in your terminal how many computers are connected their ip, mac adress and their expiration of dhcp leases.

nano dhcpd.lease

paste the content below then save the file

chmod +x dhcpd.lease
#!/bin/sh
#
# dhcpactiv.sh
#
# v.004
# - rewritten again to pull data from dhcpd files according to labels instead of position
#
# v.003
# - add code to remove tstp information from dpcpd.leases
#
# v.002
# - rewritten to use awk more for parsing
# - added "GMT" indicator to Expiration col head
#
echo "Source        Host                      MAC Address       IP Address      Expiration (GMT)"
echo "============= ========================= ================= =============== ================"
#
awk ' { out = ""} \
     { $1=="lease"||$1=="client-hostname" ? out=" " $2 : out=out } \
     { $1=="binding"||$1=="hardware" ? out= " " $3: out=out } \
     { $1=="ends"? out=" " $3 " " $4: out=out } \
     { $1=="}"? out="\n": out=out } \
     { printf out," " }' /var/lib/dhcpd/dhcpd.leases \
 | grep active \
 | sed -e s/'[{};" ]'/\ /g  \
 | awk '{ printf "%-13s %-25s %-17s %-15s %-10s %-5s\n", "dhcpd.leases", $6, $5, $1, $2, $3 }'

#
# Now do the same for /etc/dhcpd.conf
#
awk ' { out = ""}
      { $1=="host"||$1=="fixed-address" ? out=" " $2 : out=out } \
      { $1=="hardware" ? out= " " $3: out=out } \
      { $1=="}"? out="\n": out=out } \
      { printf out," " }' /etc/dhcpd.conf \
 | grep : \
 | sed -e  s/'[{};\" ]'/\ /g -e  s/\.`config get DomainName`// \
 | awk  '{ printf "%-13s %-25s %-17s %-15s %-15s \n", "dhcpd.conf", $1, $2, $3, "reservation"}'
#
# Finally, grab the current arp table
#
arp -a \
 |  sed -e s/\\..*\(/\ / -e s/\)// \
 |  awk '{ printf "%-13s %-25s %-17s %-15s %-15s \n", "arp", $1, $4, $2, "n/a"}'

customize the lease duration

You can customize the lease duration for the dhcp server (dhcpd) in SME using these instructions. The commands below will create custom template fragments for default-lease-time and max-lease-time, re-generate /etc/dhcpd.conf, and restart the dhcpd service in order to activate your changes.

mkdir -p /etc/e-smith/templates-custom/etc/dhcpd.conf
cd  /etc/e-smith/templates-custom/etc/dhcpd.conf
echo "    default-lease-time  {21*86400};"      > 25LeaseTimeDefault
echo "    max-lease-time      {21*86400};"      > 25LeaseTimeMax
expand-template /etc/dhcpd.conf
sv restart dhcpd

Notes

  • Replace "21" with the desired number of days.
  • The spaces in front of "default-lease-time" and "max-lease-time" are important!
  • SME default 'default-lease-time' is 1 day (86400 seconds).
  • SME default 'max-lease-time' is 7 days (7*86400 = 604800 seconds).
  • The SME expand-template command performs the calculation inside the braces and puts the results into the output file without braces.

Verify your changes

Verify that your changes "stuck" by looking at the actual values in /etc/dhcpd.conf:

grep lease-time /etc/dhcpd.conf

The above sample, using {21*86400}, produces the following in /etc/dhcpd.conf:

   default-lease-time  1814400;
   max-lease-time      1814400;

Un-Do these customizations

You can un-do these customizations with:

rm -f /etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeDefault
rm -f /etc/e-smith/templates-custom/etc/dhcpd.conf/25LeaseTimeMax
expand-template /etc/dhcpd.conf
sv restart dhcpd