如何监控DHCP服务器使用情况

时间:2020-03-21 11:46:19  来源:igfitidea点击:

在本文中,我们将了解如何监控DHCP服务器的用法。
此脚本在DHCP服务器中分析"/var/lib/dhcp/dhcpd.leases"文件,并显示详细信息,例如使用它们的租约。

监控DHCP服务器使用情况

我在Ubuntu 16.04 LTS服务器中测试了此脚本。
它效果很好。
请注意,DHCPD.LEASE文件的位置可能在某些Linux发行版中不同。
我们需要在服务器中提及正确的文件名。
在Ubuntu 16.04 LTS服务器中,我们可以在/var/lib/dhcp/location下找到dhcpd.leases文件的正确位置。
作者在此脚本中提到了/var/lib/dhcpd/dhcpd.lease。
它对我不起作用。
我用正确的位置替换了正确的路径:/var/lib/dhcp/dhcpd.lease在Ubuntu 16.04系统中。

其中我已将完整的脚本包含在内。
只是COY并将其粘贴到文本文件中并将其保存.sh扩展名。
出于本教程的目的,我将其作为monitor_dhcp.sh。

#!/bin/bash
rm /tmp/showdhcp.log &
rm /tmp/tmp* &
tempFile=$(mktemp)
cat /var/lib/dhcp/dhcpd.leases \
  | grep \
      -e '^lease ' \
      -e '^  binding state' \
      -e hardware \
      -e client-hostname \
      -e } >$tempFile.1
sed -e "s/^lease \(.*\) {$/~/" \
    -e "s/^  binding state \(.*\);$/~/" \
    -e "s/^  hardware ethernet \(.*\);$/~/" \
    -e "s/ client-hostname \(.*\);$/~/" \
    -e "s/^}//" \
    $tempFile.1 > $tempFile.2
sed -e ":'loop';/~$/N;s/~\n/,/;t'loop'" \
    -e "s/,$//" \
    -e "s/,/\t/g" \
    $tempFile.2 | sort > $tempFile.3
sed -e'$!N;/^\(.*\)\n$/!P;D' $tempFile.3 > $tempFile.4
print=$(printf "IP Addr\t\tStatus\t\tMAC\t\tHost Name\n")
cat $tempFile.4 > /tmp/showdhcp.log &
sed -i "1i $print" /tmp/showdhcp.log 
#rm -rvf /tmp/Non_Active_User*
#rm -rvf /tmp/Active_User*
#cp -rvf $tempFile.4 /tmp/showdhcp.log &
free=$(grep -o -w 'free' /tmp/showdhcp.log | wc -w)
active=$(grep -o -w 'active' /tmp/showdhcp.log | wc -w)
echo -e ""
echo -e "--------- Total Count- Active & Non Active -----------"
echo -e ""
echo -e "Total Active User :"       $free
echo -e "Total Non Active User :"   $active
echo -e "------------------------------------------------------"
#sed -n '/free/p' /tmp/showdhcp.log > /tmp/Non_Active_User_$(date +"%Y-%m-%d__%H%M%S").log
#sed -n '/active/p' /tmp/showdhcp.log > /tmp/Active_User_$(date +"%Y-%m-%d__%H%M%S").log
rm $tempFile.* 
#rm -rvf /tmp/showdhcp.log
#rm -rvf /tmp/tmp* &

将其作为可执行文件使用如下所示。

sudo chmod +x monitor_dhcp.sh

现在,运行以下命令以监控DHCP服务器的使用情况。

./monitor_dhcp.sh

示例输出:

--------- Total Count- Active & Non Active ----------
Total Active User : 2
Total Non Active User : 1
-----------------------------------------------------

如上所述,有两个活动用户和一个非活动用户。

或者,我们可以使用日志文件检查DHCP客户端详细信息。

cat /tmp/showdhcp.log

示例输出:

IP Addr        Status      MAC     Host Name
192.168.1.150   free    xx:xx:xx:xx:xx:xx
192.168.1.151   active  xx:xx:xx:xx:xx:xx   "sk"
192.168.1.152   free    xx:xx:xx:xx:xx:xx