Matt Simerson
and 1 contributors

NAME - generate and email a pretty HTML formatted report of your ISP uplinks


Version 1.01

SYNOPSIS [-options] [-v]

    available options:
    back:       days backwards used to determine reporting period    
    email:      email address to send the report to    
    start/stop: start/end day in DD format    
    help:     display this help page
    verbose:  verbose/debug output


Add to cron:

 # crontab -e
  30 5 1 * * /usr/local/sbin/

Or better yet, add to your systems periodic scripts. On FreeBSD, this would be optimal:

  mkdir -p /usr/local/etc/periodic/weekly && chdir /usr/local/etc/periodic/weekly  
  echo '#!/bin/sh' >  
  echo '/usr/local/sbin/' >>  
  chmod 755



The default reporting time period is the first day of the current month until the last complete day of data, yesterday. The exception to this rule is EOM (End of Month) days. If run within 5 days of of the end of the month (ie, the 1-5 of the next month), then the reporting interval is the previous complete month.

This setting allows specification of how many days -back are used when calculating the month to report. To run a report for the previous month when the current day is greater than 5, set -back to a value of todays day plus one.

  Jan 25th, -back 5, reports Jan 1-24
  Feb 04th, -back 5, reports Jan 1-31
  Feb 10th, -back 5, reports Feb 1-9
  Feb 10th, -back 11, reports Jan 1-31
  Feb 10th, -back 45, reports Dec 1-31

The report is automatically emailed to each email address listed in the reporter.conf file. You can optionally specify an email address on the command line that overrides the config file settings.


Prints out the pod documentation.


If the -back option doesn't provide the exact date range you want, you can optional specify a -start and -end day for the report. This would be useful if you were reporting on a basis other than monthly.


This billing is designed to run quietly via cron and only generate noise if errors are encountered. The -verbose option prints out status information while processing.


Generates an uplink report that shows how much traffic each ISP uplink port is utilizing. We run this report weekly and it gives our operations team and executives a high level overview of our network traffic. It also gives us handy reference points to compare and validate the usage our ISPs bill us for. An example is included.


Configuration and syntax is defined in the rtgreport.conf file. The default location is in /usr/local/etc. See the example configuration file for additional documentation.


Uses the following perl built-in modules: English, Getopt::Long

Also uses the following CPAN perl modules: Date::Calc, DBIx::Simple, MIME::Lite, Net::SMTP, Config::Std


v1.01 - Mar 01, 2008
 - added pod documentation
 - moved config settings into rtgreport.conf
 - renamed dcs to groups (more generally applicable)
 - renamed pods to networks (see above)
v1.00 - Dec 14, 2007 - initial authoring


Matt Simerson <> and Jason Morton <>


Copyright (c) 2007 Layered Technologies, Inc. All rights reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.