FANDOM


Email Bandwidth Usage Daily

This script by tc23emp will email you with the previous day's and total month's bandwidth usage. Edit it with your SMTP info. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=476631#476631

Runs it 12:05AM at the start of a new day

Explanation of flags

-S = smtp server address
-f = from email address
-u = username for the smtp account
-p = password for smtp account
-s = email subject
-d = senders domain
-F = "From" name (as opposed to address)

This script will email you with the previous day's and total month's bandwidth usage. Edit it with your sendmail SMTP info.

Original Forum Topic

#!/bin/sh

fnc_mail() {
   subj="$1"
   msg="$2"
   if [ -z "$3" -o "$(dirname $3)" = "." ]; then logfile="/tmp/lastmail.log"; else logfile="$3"; fi
   
   sendmail -S"smtp.comcast.net" -f"sender@comcast.net" -F"DD-WRT" -d"comcast.net" -s"$subj" -m"$msg" me@gmail.com > $logfile 2>&1
}

#Parse the previous day and monthly totals and send an email
aff="aff" #keyword workaround
yday=$(date -D %s -d $(( $(date +%s) - 86400)) +%d)
ymon=$(date -D %s -d $(( $(date +%s) - 86400)) +tr$aff-%m-%Y)
ydat=$(date -D %s -d $(( $(date +%s) - 86400)) +"%h %d") 
if [ $(date +%d) -eq 1 ]; then monmsg="Last Month"; else monmsg="Month to Date"; fi
msg=$(nvram get $ymon | awk '{print $'$yday', $NF}' | sed 's/\([^:]*\):\([^ ]*\) \[\([^:]*\):\([^]]*\)]/Totals for Yesterday\nIncoming: \1 MB\nOutgoing: \2 MB\n\nTotals for '"${monmsg}"'\nIncoming: \3 MB\nOutgoing: \4 MB\n/')
fnc_mail "Bandwidth Report for $ydat" "$msg" "/tmp/bwmail.log" 


More in-depth examples

These scripts can be added via the web interface.
Tested on DD-WRT v24-sp2 (08/12/10) std-nokaid-small (SVN revision 14929)

Administration -> Management ->
Enable Cron = true
Additional Cron Jobs:

5 0 * * * root /tmp/custom.sh bwmail
*/5 * * * * root /tmp/custom.sh wlclient

Administration -> Commands -> Custom Script:

#!/bin/sh

# Bandwidth Usage email

fnc_mail() {
   subj="$1"
   msg="$2"
   if [ -z "$3" -o "$(dirname $3)" = "." ]; then logfile="/tmp/lastmail.log"; else logfile="$3"; fi
   
   sendmail -S"smtp.comcast.net" -f"sender@comcast.net" -F"DD-WRT" -d"comcast.net" -s"$subj" -m"$msg" me@gmail.com > $logfile 2>&1
}

if [ "$1" = "bwmail" ]; then
   #Parse the previous day and monthly totals and send an email
   aff="aff" #keyword workaround
   yday=$(date -D %s -d $(( $(date +%s) - 86400)) +%d)
   ymon=$(date -D %s -d $(( $(date +%s) - 86400)) +tr$aff-%m-%Y)
   ydat=$(date -D %s -d $(( $(date +%s) - 86400)) +"%h %d")
   if [ $(date +%d) -eq 1 ]; then monmsg="Last Month"; else monmsg="Month to Date"; fi
   msg=$(nvram get $ymon | awk '{print $'$yday', $NF}' | sed 's/\([^:]*\):\([^ ]*\) \[\([^:]*\):\([^]]*\)]/Totals for Yesterday\nIncoming: \1 MB\nOutgoing: \2 MB\n\nTotals for '"${monmsg}"'\nIncoming: \3 MB\nOutgoing: \4 MB\n/')
   fnc_mail "Bandwidth Report for $ydat" "$msg" "/tmp/bwmail.log" 
fi

# Client notification email

if [ "$1" = "wlclient" ]; then
   #Send a e-mail whenever a new wireless client connects, remember them until the next router reboot
   #Uncomment the following line and edit the list MAC addresses you don't want to be notified about (seperated by spaces)
   #macignore="0A:1B:2C:3D:4E:5F"
   for mac in $macignore; do
      grep -q $mac /tmp/wlclient.lst
      if [ $? -gt 0 ]; then
         echo $mac >> /tmp/wlclient.lst
      fi
   done
   maclist=$(wl -i $(nvram get wl0_ifname) assoclist | cut -d" " -f2)
   for mac in $maclist; do
      grep -q $mac /tmp/wlclient.lst
      if [ $? -gt 0 ]; then
         echo $mac >> /tmp/wlclient.lst
         inf=$(arp | grep $mac)
         if [ $? -gt 0 ]; then
            msg="$msg""Unknown at ${mac}\n"
         else
            msg="$msg""${inf}\n"
         fi
      fi
   done
   #Uncomment the following line if you want to remove disconnected clients from the previously connected list
   #echo "$maclist" | tr ' ' '\n' > /tmp/wlclient.lst
   if [ -n "$msg" ]; then
      msg=$(echo -e "$msg")
      fnc_mail "New Wireless Client(s)" "$msg"
   fi
fi

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.