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.
Just the 3, since you're looking for a text pattern.
Uncommenting the lined mentioned earlier by removing the #, will post an entry in the /tmp/detect file upon the script being run, that will rule out any potential filtering issues.
Additionally, did you also follow the steps from the 1st post from the original author. Those steps are required to call this script.