dhcp-script=/etc/detect_new_device.sh
Reference:
- https://wiki.openwrt.org/doc/howto/smtp.client
- https://fixmynix.com/send-mail-command-line-linux-openwrt/
- http://lifehacker.com/5506326/how-can-i-send-an-email-via-text-message
#!/bin/sh
# script to detect new dhcp lease
# this will be called by dnsmasq everytime a new device is connected
# with the following arguments
# $1 = add | old
# $2 = mac address
# $3 = ip address
# $4 = device name
notification_email="[email protected]"
if [ "$1" == "add" ]; then
msg="New device on `uci get system.@system[0].hostname`.`uci get dhcp.@dnsmasq[0].domain` $*"
echo `date` $msg >> /tmp/dhcpmasq.log
# encode colon (:) and send email
echo $msg | sed s/:/-/g | sendmail "$notification_email"
fi
This script only sends alerts if the mac address is not in the list
#!/bin/sh
# script to detect new dhcp lease
# this will be called by dnsmasq everytime a new device is connected
# with the following arguments
# $1 = add | old
# $2 = mac address
# $3 = ip address
# $4 = device name
known_mac_addr="/etc/known_mac_addr"
notification_email="[email protected]"
# check if the mac is in known devices list
grep -q "$2" "$known_mac_addr"
unknown_mac_addr=$?
if [ "$1" == "add" ] && [ "$unknown_mac_addr" -ne 0 ]; then
msg="New device on `uci get system.@system[0].hostname`.`uci get dhcp.@dnsmasq[0].domain` $*"
echo `date` $msg >> /tmp/dhcpmasq.log
# encode colon (:) and send email
echo $msg | sed s/:/-/g | sendmail "$notification_email"
fi
When a new device is added, dnsmasq calls detect_new_device.sh
with arguments add mac_addr ip_addr devicename
. The script checks if the device is new (if the dhcp lease hasn't expired, it calls with old
), then logs and emails (which eventually is a text message) the information.
Typically, the random MAC addresses don't change on every connection attempt, so it's possible that the MAC address was already assigned a dynamic IP address and doesn't request a new IP address to be assigned. If this is the case, a new email won't be generated till the IP lease is expired. You can check to see when the IP assignment will expire from the Status page, listed under "Lease time remaining". Quickest way to discard the assignment/lease, would be to reboot your router and attempt to connect to it again.
In addition to the email, there should be an entry created in /tmp/dhcpmasq.log. You can check this file to verify as well, incase the issue is related to email setup.