Поиск по сайту:

Как контролировать использование DHCP-сервера

Вчера мы опубликовали статью о том, как установить и настроить DHCP-сервер на сервере Ubuntu 16.04 LTS. В этой статье мы увидим, как отслеживать использование DHCP-сервера с помощью простого скрипта, написанного Mr.Ashutosh, одним из наших друзей и постоянных читателей OSTechNix. Этот скрипт анализирует файл '/var/lib/dhcp/dhcpd.leases' на DHCP-сервере и отображает подробные сведения, например, какие аренды активны, кто их использует и т. д.

Мониторинг использования DHCP-сервера

Я протестировал этот сценарий на сервере Ubuntu 16.04 LTS. Это сработало просто отлично. Обратите внимание, что расположение файла dhcpd.leases может отличаться в некоторых дистрибутивах Linux. Вам необходимо указать правильное имя файла на сервере. На сервере Ubuntu 16.04 LTS правильное расположение файла dhcpd.leases можно найти в разделе /var/lib/dhcp/ location. Автор упомянул /var/lib/dhcpd/dhcpd.leases  в этом скрипте. У меня это не работает. Я заменил путь правильным местоположением, например /var/lib/dhcp/dhcpd.leases  в системах Ubuntu 16.04.

Здесь я включил полный сценарий. Просто вставьте его в текстовый файл и сохраните с расширением .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 \(.*\) {$/\1~/" \
    -e "s/^  binding state \(.*\);$/\1~/" \
    -e "s/^  hardware ethernet \(.*\);$/\1~/" \
    -e "s/  client-hostname \(.*\);$/\1~/" \
    -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\1$/!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* &

Или загрузите сценарий из следующего местоположения.

  • Скрипт мониторинга использования DHCP

После загрузки сделайте его исполняемым, как показано ниже.

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

Для получения дополнительной информации и вопросов об этом сценарии свяжитесь с г-ном Ашутошем.

  • Электронная почта: ashutoshsmaurya@gmail.com
  • Facebook: https://www.facebook.com/ashutoshsmaurya.

Это все на сегодня. Надеюсь, этот скрипт может быть вам полезен.

Счастливые выходные! Ваше здоровье!!

Статьи по данной тематике