<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cocnm.computerisms.ca/index.php?action=history&amp;feed=atom&amp;title=%2Froot%2Fscripts%2Fbwrpt.pl</id>
	<title>/root/scripts/bwrpt.pl - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://cocnm.computerisms.ca/index.php?action=history&amp;feed=atom&amp;title=%2Froot%2Fscripts%2Fbwrpt.pl"/>
	<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;action=history"/>
	<updated>2026-11-14T11:55:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=446&amp;oldid=prev</id>
		<title>Bob at 19:19, 12 August 2015</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=446&amp;oldid=prev"/>
		<updated>2015-08-12T19:19:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:19, 12 August 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## This should cover any packages required on a standard debian box:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## This should cover any packages required on a standard debian box:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## apt-get install libfile-tail-perl libtext-trim-perl libdatetime-format-mail-perl libnet-sslglue-perl&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## apt-get install libfile-tail-perl libtext-trim-perl libdatetime-format-mail-perl libnet-sslglue-perl &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nbtscan&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## This script depends on configuration of the iptaccount module available in xtables-addons&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;## This script depends on configuration of the iptaccount module available in xtables-addons&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=412&amp;oldid=prev</id>
		<title>Bob at 00:05, 9 July 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=412&amp;oldid=prev"/>
		<updated>2014-07-09T00:05:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:05, 9 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l394&quot;&gt;Line 394:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 394:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		print RPT &amp;quot;\n&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		print RPT &amp;quot;\n&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, &amp;quot;IP ADDR&amp;quot;, &amp;quot;DAYDN&amp;quot;, &amp;quot;DAYUP&amp;quot;, &amp;quot;DAYTL&amp;quot;, &amp;quot;MTDDN&amp;quot;, &amp;quot;MTDUP&amp;quot;, &amp;quot;MTDTL&amp;quot;, &amp;quot;Last Seen Host  &amp;quot;, &amp;quot;Host #&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, &amp;quot;IP ADDR&amp;quot;, &amp;quot;DAYDN&amp;quot;, &amp;quot;DAYUP&amp;quot;, &amp;quot;DAYTL&amp;quot;, &amp;quot;MTDDN&amp;quot;, &amp;quot;MTDUP&amp;quot;, &amp;quot;MTDTL&amp;quot;, &amp;quot;Last Seen Host  &amp;quot;, &amp;quot;Host #&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#		if ( keys %{$daily{$thisday}{$i}} ) {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			foreach my $ips (sort ( keys %{$daily{$thisday}{$i}} ) ) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			foreach my $ips (sort ( keys %{$daily{$thisday}{$i}} ) ) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, $ips, int($daily{$thisday}{$i}{$ips}{ttlout}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttlin}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttl}/$mb/$mb), int($daily{$i}{$ips}{mtdttlout}/$mb/$mb), int($daily{$i}{$ips}{mtdttlin}/$mb/$mb), int($daily{$i}{$ips}{mtdttl}/$mb/$mb), $daily{$thisday}{$i}{$ips}{devname}, $daily{$thisday}{$i}{$ips}{devchange});&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, $ips, int($daily{$thisday}{$i}{$ips}{ttlout}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttlin}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttl}/$mb/$mb), int($daily{$i}{$ips}{mtdttlout}/$mb/$mb), int($daily{$i}{$ips}{mtdttlin}/$mb/$mb), int($daily{$i}{$ips}{mtdttl}/$mb/$mb), $daily{$thisday}{$i}{$ips}{devname}, $daily{$thisday}{$i}{$ips}{devchange});&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#		}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	close (RPT);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	close (RPT);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l407&quot;&gt;Line 407:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 405:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	my $smtp = Net::SMTP-&amp;gt;new( &amp;quot;$smtpserver&amp;quot;, SSL =&amp;gt; 1, Hello =&amp;gt; &amp;quot;$mailhello&amp;quot;, SSL_ca_path =&amp;gt; &amp;#039;/etc/ssl/certs&amp;#039;, SSL_verify_mode =&amp;gt; 0) or die &amp;quot;Failed to open SMTP connection: $!&amp;quot;;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	my $smtp = Net::SMTP-&amp;gt;new( &amp;quot;$smtpserver&amp;quot;, SSL =&amp;gt; 1, Hello =&amp;gt; &amp;quot;$mailhello&amp;quot;, SSL_ca_path =&amp;gt; &amp;#039;/etc/ssl/certs&amp;#039;, SSL_verify_mode =&amp;gt; 0) or die &amp;quot;Failed to open SMTP connection: $!&amp;quot;;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#	$smtp-&amp;gt;starttls(SSL_ca_path =&amp;gt; &#039;/etc/ssl/certs&#039;, SSL_verify_mode =&amp;gt; 0);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	$smtp-&amp;gt;auth (&amp;quot;$smtpauthname&amp;quot;,&amp;quot;$smtpauthpass&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	$smtp-&amp;gt;auth (&amp;quot;$smtpauthname&amp;quot;,&amp;quot;$smtpauthpass&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	$smtp-&amp;gt;mail (&amp;quot;$mailfrom&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	$smtp-&amp;gt;mail (&amp;quot;$mailfrom&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=411&amp;oldid=prev</id>
		<title>Bob at 00:04, 9 July 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=411&amp;oldid=prev"/>
		<updated>2014-07-09T00:04:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;amp;diff=411&amp;amp;oldid=405&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=405&amp;oldid=prev</id>
		<title>Bob at 03:27, 15 May 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=405&amp;oldid=prev"/>
		<updated>2014-05-15T03:27:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;amp;diff=405&amp;amp;oldid=395&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=395&amp;oldid=prev</id>
		<title>Bob at 19:38, 27 April 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=395&amp;oldid=prev"/>
		<updated>2014-04-27T19:38:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:38, 27 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;New Script - Please read the notes at the top as things have changed since [[/root/scripts/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bwmon&lt;/del&gt;.sh]]&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;New Script - Please read the notes at the top as things have changed since [[/root/scripts/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bwrprt&lt;/ins&gt;.sh]]&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=394&amp;oldid=prev</id>
		<title>Bob at 19:37, 27 April 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=394&amp;oldid=prev"/>
		<updated>2014-04-27T19:37:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:37, 27 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;New Script - Please read the notes at the top as things have changed since [[bwmon.sh]]&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;h5&amp;gt;New Script - Please read the notes at the top as things have changed since [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/root/scripts/&lt;/ins&gt;bwmon.sh]]&amp;lt;/h5&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=393&amp;oldid=prev</id>
		<title>Bob at 19:37, 27 April 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=393&amp;oldid=prev"/>
		<updated>2014-04-27T19:37:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:37, 27 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;h5&amp;gt;New Script - Please read the notes at the top as things have changed since [[bwmon.sh]]&amp;lt;/h5&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
	<entry>
		<id>http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=388&amp;oldid=prev</id>
		<title>Bob at 03:52, 16 April 2014</title>
		<link rel="alternate" type="text/html" href="http://cocnm.computerisms.ca/index.php?title=/root/scripts/bwrpt.pl&amp;diff=388&amp;oldid=prev"/>
		<updated>2014-04-16T03:52:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
# Written by Bob Miller - bob@computerisms.ca&lt;br /&gt;
# Converted from Bash Script Feb 2014 and&lt;br /&gt;
# modified to account for &amp;gt;4GB/hour internet connections&lt;br /&gt;
&lt;br /&gt;
## This should cover any packages required on a standard debian box:&lt;br /&gt;
## apt-get install libfile-tail-perl libtext-trim-perl&lt;br /&gt;
&lt;br /&gt;
## This script depends on configuration of the iptaccount module available in xtables-addons&lt;br /&gt;
## It assumes each subnet matches one physical interface which matches one iptaccount table name&lt;br /&gt;
## Some iptables rules like this should work:&lt;br /&gt;
## iptables -t filter -I FORWARD -j ACCOUNT --addr 192.168.25.0/24 --tname lan&lt;br /&gt;
## iptables -t mangle -I POSTROUTING -j ACCOUNT --addr 0/0 --tname wan&lt;br /&gt;
&lt;br /&gt;
## Set cron to run this often enough that the $wrap variable is not exceeded in one run&lt;br /&gt;
## For example, on slow connections, this can be run once per hour, on fast connections every&lt;br /&gt;
## 10 minutes.  It needs to be run offset so that the reporting fires before midnight, something&lt;br /&gt;
## Like so will do (note busy systems may need to run 2 minutes before midnight to give the &lt;br /&gt;
## script time to run instead of one minute):&lt;br /&gt;
## 9-59/10 * * * * PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; /usr/bin/perl /root/scripts/bwrpt.pl&lt;br /&gt;
&lt;br /&gt;
#bwrpt.pl&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use Time::Piece;&lt;br /&gt;
use Time::Seconds;&lt;br /&gt;
use File::Path qw(make_path);&lt;br /&gt;
use File::Tail;&lt;br /&gt;
use Text::Trim;&lt;br /&gt;
use Net::SMTP;&lt;br /&gt;
&lt;br /&gt;
####################################################################################&lt;br /&gt;
####################################################################################&lt;br /&gt;
##                                                                                ##&lt;br /&gt;
##                          Configuration Options                                 ##&lt;br /&gt;
##                                                                                ##&lt;br /&gt;
####################################################################################&lt;br /&gt;
####################################################################################&lt;br /&gt;
&lt;br /&gt;
## Configure WAN ehternet port and matching --tname from iptables&lt;br /&gt;
our $wanface = &amp;quot;eth0&amp;quot;;&lt;br /&gt;
our $wanipt = &amp;quot;wan&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## From your iptables, list all --tname values here except the wan&lt;br /&gt;
our @iptname = (&amp;quot;computerisms&amp;quot;, &amp;quot;computerisms-pub&amp;quot;, &amp;quot;computerisms2remote&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
## WISHLIST ITEM&lt;br /&gt;
## Enable full detail for per-host reporting (set to 0 to disable, set to 1 to enable)&lt;br /&gt;
## List each --tname you have in @iptname and enable/disable each one&lt;br /&gt;
#our %iptdetail = (&lt;br /&gt;
#	&amp;quot;computerisms&amp;quot; =&amp;gt; 1,&lt;br /&gt;
#	&amp;quot;computerisms-pub&amp;quot; =&amp;gt; 0,&lt;br /&gt;
#	&amp;quot;computerisms2remote&amp;quot; =&amp;gt; 0,&lt;br /&gt;
#);&lt;br /&gt;
&lt;br /&gt;
## Set the base directory to store daily data&lt;br /&gt;
our $base = &amp;quot;/root/scripts/bwdata&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set 32-bit system or 64-bit system&lt;br /&gt;
our $wrap = 4294967295; ## Uncomment this for 32-bit&lt;br /&gt;
#our $wrap = 18446744073709551615; ## Uncomment this for 64-bit&lt;br /&gt;
&lt;br /&gt;
## Set these values as per the cronjob to the last run of the day to generate and send a report.&lt;br /&gt;
our $rpthour = &amp;quot;23&amp;quot;;&lt;br /&gt;
our $rptmin = &amp;quot;59&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Set Mega or Mibi&lt;br /&gt;
our $mb = &amp;quot;1000&amp;quot;; ## Uncomment this line for Mega&lt;br /&gt;
#our $mb = &amp;quot;1024&amp;quot;; ## Uncomment this line for Mibi&lt;br /&gt;
&lt;br /&gt;
## Set this to the max bandwidth in GB(GiB) before incurring overage charges&lt;br /&gt;
our $maxbw = &amp;quot;90&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
## Configure mail settings&lt;br /&gt;
our $smtpserver = &amp;quot;mail.computerisms.com&amp;quot;;&lt;br /&gt;
our $mailfrom = &amp;quot;firewall\@computerisms.com&amp;quot;;&lt;br /&gt;
our $mailto = &amp;quot;bob.miller\@computerisms.com&amp;quot;;&lt;br /&gt;
our $mailhello = &amp;quot;firewall.computerisms.com&amp;quot;;&lt;br /&gt;
our $smtpauthname = &amp;quot;smtpauth\@computerisms.com&amp;quot;;&lt;br /&gt;
our $smtpauthpass = &amp;quot;xxxxxxxxx&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####################################################################################&lt;br /&gt;
####################################################################################&lt;br /&gt;
##                                                                                ##&lt;br /&gt;
##           You should not need to change anything below here                    ##&lt;br /&gt;
##                                                                                ##&lt;br /&gt;
####################################################################################&lt;br /&gt;
####################################################################################&lt;br /&gt;
&lt;br /&gt;
## Populate time and date variables&lt;br /&gt;
&lt;br /&gt;
our $date = Time::Piece-&amp;gt;new;&lt;br /&gt;
our $time = $date-&amp;gt;time;&lt;br /&gt;
our $hour = $date-&amp;gt;hour;&lt;br /&gt;
our $min = $date-&amp;gt;min;&lt;br /&gt;
our $month = $date-&amp;gt;strftime(&amp;#039;%Y/%m&amp;#039;);&lt;br /&gt;
our $thisday = $date-&amp;gt;strftime(&amp;#039;%d&amp;#039;);&lt;br /&gt;
our $today = $date-&amp;gt;ymd(&amp;quot;/&amp;quot;);&lt;br /&gt;
our $yesterday = ($date - ONE_DAY)-&amp;gt;ymd(&amp;quot;/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
## Test if Today&amp;#039;s directory exists, if not create it&lt;br /&gt;
&lt;br /&gt;
if (!-d &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;) {&lt;br /&gt;
	make_path(&amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Set System Executables&lt;br /&gt;
&lt;br /&gt;
our $doipt = qx(which iptaccount) or die &amp;quot;cannot find iptaccount program $!&amp;quot;;&lt;br /&gt;
our $donbt = qx(which nbtscan) or die &amp;quot;cannot find nbtscan program $!&amp;quot;;&lt;br /&gt;
#our $doarp = qx(which arp) or die &amp;quot;cannot find arp program $!&amp;quot;;&lt;br /&gt;
chomp ($doipt, $donbt);&lt;br /&gt;
&lt;br /&gt;
## Now Collect iptaccount data for internal subnets&lt;br /&gt;
&lt;br /&gt;
for my $curiptname (@iptname) {&lt;br /&gt;
	if (!-d &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;.&amp;quot;/&amp;quot;) {&lt;br /&gt;
		make_path(&amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	my @ipt = qx($doipt -s -l $curiptname);&lt;br /&gt;
	my ($lastrun, $hostname);&lt;br /&gt;
	foreach my $i (@ipt) {&lt;br /&gt;
		next if $i =~ /^\D/;&lt;br /&gt;
		chomp $i;&lt;br /&gt;
		my @ip = split(&amp;#039;;&amp;#039;, $i);&lt;br /&gt;
		my $curfile=&amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$ip[0]&amp;quot;;&lt;br /&gt;
		if (!-e $curfile) {&lt;br /&gt;
#			open IP, &amp;quot;&amp;gt;&amp;gt; $curfile&amp;quot; or die $!;&lt;br /&gt;
#			print IP &amp;quot;timestamp iptin iptout insince outsince runttlin runttlout runttl wrapin wrapout hostname hostchange\n&amp;quot;;&lt;br /&gt;
			if (-e &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$yesterday&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$ip[0]&amp;quot;) {&lt;br /&gt;
				my $lastfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$yesterday&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$ip[0]&amp;quot;, tail =&amp;gt; 1);&lt;br /&gt;
				$lastrun = $lastfile -&amp;gt; read;&lt;br /&gt;
				my @resetday = split (/ /, $lastrun);&lt;br /&gt;
				@resetday[5..9,11] = (0) x 6;&lt;br /&gt;
				$lastrun = &amp;quot;@resetday&amp;quot;;&lt;br /&gt;
				chomp $lastrun;&lt;br /&gt;
			} else {&lt;br /&gt;
				$lastrun = &amp;quot;0 0 0 0 0 0 0 0 0 0 undef 0 &amp;quot;;&lt;br /&gt;
				chomp $lastrun;&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			my $lastfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$curiptname&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$ip[0]&amp;quot;, tail =&amp;gt; 1) or die $!;&lt;br /&gt;
			$lastrun = $lastfile -&amp;gt; read;&lt;br /&gt;
			chomp $lastrun;&lt;br /&gt;
		}&lt;br /&gt;
		my @lastrun = split(/ /, $lastrun);&lt;br /&gt;
		my ($sincelastin, $curttlin, $sincelastout, $curttlout);&lt;br /&gt;
		if ($lastrun[1] &amp;gt; $ip[2]) {&lt;br /&gt;
			$lastrun[8]++;&lt;br /&gt;
#			$sincelastin = $lastrun[8]*$wrap+$ip[2]-$lastrun[5];&lt;br /&gt;
			$sincelastin = $wrap+$ip[2]-$lastrun[1];&lt;br /&gt;
			$curttlin = $lastrun[5]+$sincelastin;&lt;br /&gt;
		} else {&lt;br /&gt;
			$sincelastin = $ip[2]-$lastrun[1];&lt;br /&gt;
			$curttlin = $lastrun[5]+$sincelastin;&lt;br /&gt;
		}&lt;br /&gt;
		if ($lastrun[2] &amp;gt; $ip[4]) {&lt;br /&gt;
			$lastrun[9]++;&lt;br /&gt;
#			$sincelastout = $lastrun[9]*$wrap+$ip[4]-$lastrun[6];&lt;br /&gt;
			$sincelastout = $wrap+$ip[4]-$lastrun[2];&lt;br /&gt;
			$curttlout = $lastrun[6]+$sincelastout;&lt;br /&gt;
		} else {&lt;br /&gt;
			$sincelastout = $ip[4]-$lastrun[2];&lt;br /&gt;
			$curttlout = $lastrun[6]+$sincelastout;&lt;br /&gt;
		}&lt;br /&gt;
		my $runttl = $curttlin+$curttlout;&lt;br /&gt;
		next if ( $sincelastin == 0 &amp;amp;&amp;amp; $sincelastout == 0 );&lt;br /&gt;
		my @hostlook;&lt;br /&gt;
		my $lookup = qx($donbt -s : $ip[0]);&lt;br /&gt;
		if ( $lookup ne &amp;#039;&amp;#039; ) {&lt;br /&gt;
			my @hostlook = split (/:/, $lookup);&lt;br /&gt;
			$hostname = $hostlook[1];&lt;br /&gt;
			$hostname = trim($hostname);&lt;br /&gt;
			chomp $hostname;&lt;br /&gt;
		} else {&lt;br /&gt;
			$lookup = qx(grep $ip[0] /proc/net/arp);&lt;br /&gt;
			if ( $lookup ne &amp;#039;&amp;#039; ) {&lt;br /&gt;
				@hostlook = split (&amp;#039; &amp;#039;, $lookup);&lt;br /&gt;
				$hostname = $hostlook[3];&lt;br /&gt;
				$hostname = trim($hostname);&lt;br /&gt;
				chomp $hostname;&lt;br /&gt;
				$hostname=$lastrun[10] if ( $hostname =~ /incomplete/ ); &lt;br /&gt;
				$hostname=$lastrun[10] if ( $hostname =~ /00:00:00:00:00:00/ ); &lt;br /&gt;
			} else { &lt;br /&gt;
				$hostname = &amp;quot;NOT DEFINABLE&amp;quot;;&lt;br /&gt;
				chomp $hostname;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if ( $hostname ne &amp;quot;$lastrun[10]&amp;quot; ) {&lt;br /&gt;
			$lastrun[11]++;&lt;br /&gt;
		}&lt;br /&gt;
		open IP, &amp;quot;&amp;gt;&amp;gt; $curfile&amp;quot; or die $!;&lt;br /&gt;
		if ( -z $curfile) {&lt;br /&gt;
			print IP &amp;quot;timestamp iptin iptout insince outsince runttlin runttlout runttl wrapin wrapout hostname hostchange\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		print IP &amp;quot;$time $ip[2] $ip[4] $sincelastin $sincelastout $curttlin $curttlout $runttl $lastrun[8] $lastrun[9] $hostname $lastrun[11]\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Now do data for WAN port&lt;br /&gt;
&lt;br /&gt;
my $curfile=&amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$wanface&amp;quot;;&lt;br /&gt;
my ($lastrun, $curwanipt, $sincelastipt, $ttlipt, $insince, $runttlin, $outsince, $runttlout);&lt;br /&gt;
if (!-e $curfile) {&lt;br /&gt;
	open WAN, &amp;quot;&amp;gt;&amp;gt; $curfile&amp;quot; or die $!;&lt;br /&gt;
	print WAN &amp;quot;timestamp ipt sysin sysout iptsince runipt insince outsince runttlin runttlout runttl wrapipt wrapin wrapout\n&amp;quot;;&lt;br /&gt;
	if (-e &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$yesterday&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$wanface&amp;quot;) {&lt;br /&gt;
		my $lastfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$yesterday&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$wanface&amp;quot;, tail =&amp;gt; 1) or die $!;&lt;br /&gt;
		$lastrun = $lastfile -&amp;gt; read;&lt;br /&gt;
		my @resetday = split (/ /, $lastrun);&lt;br /&gt;
		@resetday[4..13] = (0) x 10;&lt;br /&gt;
		$lastrun = &amp;quot;@resetday&amp;quot;;&lt;br /&gt;
		chomp $lastrun;&lt;br /&gt;
	} else {&lt;br /&gt;
		$lastrun = &amp;quot;0 0 0 0 0 0 0 0 0 0 0 0 0 0&amp;quot;;&lt;br /&gt;
		chomp $lastrun;&lt;br /&gt;
	}&lt;br /&gt;
} else {&lt;br /&gt;
	my $lastfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$wanface&amp;quot;, tail =&amp;gt; 1) or die $!;&lt;br /&gt;
	$lastrun = $lastfile -&amp;gt; read;&lt;br /&gt;
	chomp $lastrun;&lt;br /&gt;
}&lt;br /&gt;
my @ipt = qx($doipt -s -l $wanipt);&lt;br /&gt;
foreach my $j (@ipt) {&lt;br /&gt;
	if ($j =~ /^\d/) {&lt;br /&gt;
		chomp $j;&lt;br /&gt;
		my @ipt = split(&amp;#039;;&amp;#039;, $j);&lt;br /&gt;
		$curwanipt =$ipt[2];&lt;br /&gt;
		last;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
open RX, &amp;quot;/sys/class/net/$wanface/statistics/rx_bytes&amp;quot; or die $!;&lt;br /&gt;
open TX, &amp;quot;/sys/class/net/$wanface/statistics/tx_bytes&amp;quot; or die $!;&lt;br /&gt;
my $sysin = &amp;lt;RX&amp;gt;;&lt;br /&gt;
my $sysout = &amp;lt;TX&amp;gt;;&lt;br /&gt;
chomp ($sysin, $sysout);&lt;br /&gt;
my @lastrun = split(/ /, $lastrun);&lt;br /&gt;
if ($lastrun[1] &amp;gt; $curwanipt) {&lt;br /&gt;
	$lastrun[11]++;&lt;br /&gt;
#	$sincelastipt = $lastrun[11]*$wrap+$curwanipt-$lastrun[5];&lt;br /&gt;
	$sincelastipt = $wrap+$curwanipt-$lastrun[1];&lt;br /&gt;
	$ttlipt = $lastrun[5]+$sincelastipt;&lt;br /&gt;
} else {&lt;br /&gt;
	$sincelastipt = $curwanipt-$lastrun[1];&lt;br /&gt;
	$ttlipt = $sincelastipt+$lastrun[5];&lt;br /&gt;
}&lt;br /&gt;
if ($lastrun[2] &amp;gt; $sysin) {&lt;br /&gt;
	$lastrun[12]++;&lt;br /&gt;
#	$insince = $lastrun[12]*$wrap+$sysin-$lastrun[8];&lt;br /&gt;
	$insince = $wrap+$sysin-$lastrun[2];&lt;br /&gt;
	$runttlin = $lastrun[8]+$insince;&lt;br /&gt;
} else {&lt;br /&gt;
	$insince = $sysin-$lastrun[2];&lt;br /&gt;
	$runttlin = $insince+$lastrun[8];&lt;br /&gt;
}&lt;br /&gt;
if ($lastrun[3] &amp;gt; $sysout) {&lt;br /&gt;
	$lastrun[13]++;&lt;br /&gt;
#	$outsince = $lastrun[13]*$wrap+$sysout-$lastrun[9];&lt;br /&gt;
	$outsince = $wrap+$sysout-$lastrun[3];&lt;br /&gt;
	$runttlout = $lastrun[9]+$outsince;&lt;br /&gt;
} else {&lt;br /&gt;
	$outsince = $sysout-$lastrun[3];&lt;br /&gt;
	$runttlout = $outsince+$lastrun[9];&lt;br /&gt;
}&lt;br /&gt;
my $runttl = $runttlin+$runttlout;&lt;br /&gt;
open WAN, &amp;quot;&amp;gt;&amp;gt;$curfile&amp;quot; or die $!;&lt;br /&gt;
print WAN &amp;quot;$time $curwanipt $sysin $sysout $sincelastipt $ttlipt $insince $outsince $runttlin $runttlout $runttl $lastrun[11] $lastrun[12] $lastrun[13]\n&amp;quot;;&lt;br /&gt;
close WAN;&lt;br /&gt;
&lt;br /&gt;
## We should have a pretty comprehensive data set now, let&amp;#039;s generate a report:&lt;br /&gt;
&lt;br /&gt;
if ( $hour == $rpthour &amp;amp;&amp;amp; $min == $rptmin) {&lt;br /&gt;
	my ($wanfile, $mtdwan, $mtdlan, $runipt, $runsysin, $runsysout, $runsysttl, $mtdreadwan, $mtdreadlan, $day, $daysip,  $todayipt, $todaysysin, $todaysysout, $todaysysttl, $mtdttlin, $mtdttlout, $mtdttl);&lt;br /&gt;
	my @mtdreadwan;&lt;br /&gt;
	my @mtdreadlan;&lt;br /&gt;
	my %daily=();&lt;br /&gt;
	my $rptfile = &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$today&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;Daily.rpt&amp;quot;;&lt;br /&gt;
	opendir (DAYS,&amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$month&amp;quot;) or die &amp;quot;Can&amp;#039;t open days $!&amp;quot;;&lt;br /&gt;
	while (my $day = readdir(DAYS)) {&lt;br /&gt;
		next if $day =~ /^\D/;&lt;br /&gt;
		my $wanfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$month&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$day&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$wanface&amp;quot;, tail =&amp;gt; 1);&lt;br /&gt;
		$mtdwan = $wanfile -&amp;gt; read;	&lt;br /&gt;
		@mtdreadwan = split (/ /, $mtdwan);&lt;br /&gt;
		$runipt += $mtdreadwan[5];&lt;br /&gt;
		$runsysin += $mtdreadwan[8];&lt;br /&gt;
		$runsysout += $mtdreadwan[9];&lt;br /&gt;
		$runsysttl += $mtdreadwan[10];&lt;br /&gt;
		if ($day == $thisday) {&lt;br /&gt;
			$todayipt = $mtdreadwan[5];&lt;br /&gt;
			$todaysysin = $mtdreadwan[8];&lt;br /&gt;
			$todaysysout = $mtdreadwan[9];&lt;br /&gt;
			$todaysysttl = $mtdreadwan[10];&lt;br /&gt;
		}&lt;br /&gt;
		foreach my $i (@iptname) {&lt;br /&gt;
			next if (!-e &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$month&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$day&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$i&amp;quot;);&lt;br /&gt;
			opendir (IPT, &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$month&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$day&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$i&amp;quot;) or die &amp;quot;can&amp;#039;t open $i days-iptname $!&amp;quot;;&lt;br /&gt;
			while (my $daysip = readdir(IPT)) {&lt;br /&gt;
				next if $daysip =~ /^\D/;&lt;br /&gt;
				my $lanfile = File::Tail-&amp;gt;new(name =&amp;gt; &amp;quot;$base&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$month&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$day&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$i&amp;quot;.&amp;quot;/&amp;quot;.&amp;quot;$daysip&amp;quot;, tail =&amp;gt; 1);&lt;br /&gt;
				$mtdlan = $lanfile -&amp;gt; read;&lt;br /&gt;
				@mtdreadlan = split (/ /, $mtdlan);&lt;br /&gt;
				$daily{$day}{$i}{$daysip}{ttlin} = $mtdreadlan[5];&lt;br /&gt;
				$daily{$day}{$i}{$daysip}{ttlout} = $mtdreadlan[6];&lt;br /&gt;
				$daily{$day}{$i}{$daysip}{ttl} = $mtdreadlan[7];&lt;br /&gt;
				$daily{$i}{$daysip}{mtdttlin} += $mtdreadlan[5];&lt;br /&gt;
				$daily{$i}{$daysip}{mtdttlout} += $mtdreadlan[6];&lt;br /&gt;
				$daily{$i}{$daysip}{mtdttl} += $mtdreadlan[7];&lt;br /&gt;
				$daily{$day}{$i}{$daysip}{devname} = $mtdreadlan[10];	&lt;br /&gt;
				$daily{$day}{$i}{$daysip}{devchange} = $mtdreadlan[11];	&lt;br /&gt;
				$daily{$i}{mtdin} += $daily{$day}{$i}{$daysip}{ttlin};&lt;br /&gt;
				$daily{$i}{mtdout} += $daily{$day}{$i}{$daysip}{ttlout};&lt;br /&gt;
				$daily{$i}{mtd} += $daily{$day}{$i}{$daysip}{ttl};&lt;br /&gt;
				if ( $day == $thisday ) {&lt;br /&gt;
					$daily{$i}{dailyttlin} += $mtdreadlan[5];&lt;br /&gt;
					$daily{$i}{dailyttlout} += $mtdreadlan[6];&lt;br /&gt;
					$daily{$i}{dailyttl} += $mtdreadlan[7];&lt;br /&gt;
				}&lt;br /&gt;
			}		&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	my $percentage = int($runsysttl/($maxbw*$mb*$mb*$mb)*100);&lt;br /&gt;
	open RPT, &amp;quot;&amp;gt;&amp;gt; $rptfile&amp;quot; or die $!;&lt;br /&gt;
	print RPT &amp;quot;****************************************************************************\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;****************************************************************************\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**                                                                        **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**                     DAILY BANDWIDTH REPORT                             **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**                  For day ending: $today                            **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**                Explanations and Documentation:                         **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**  http://help.computerisms.ca/index.php?title=Daily_Bandwidth_Report    **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;**                                                                        **\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;****************************************************************************\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;****************************************************************************\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;SUMMARY\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;                       Percentage of Allowed Bandwidth Used This Month:  $percentage%\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Today&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;This Month&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Raw Data on External Port&amp;quot;, int($todaysysttl/$mb/$mb), &amp;quot;MB&amp;quot;, int($runsysttl/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data on External Port&amp;quot;, int($todayipt/$mb/$mb), &amp;quot;MB&amp;quot;, int($runipt/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	foreach my $i (@iptname) {&lt;br /&gt;
		if ( ! defined $daily{$i}{mtd} ) { &lt;br /&gt;
			$daily{$i}{mtd} = 0;&lt;br /&gt;
		}&lt;br /&gt;
		if ( ! defined $daily{$i}{dailyttl} ) {&lt;br /&gt;
			$daily{$i}{dailyttl} = 0;&lt;br /&gt;
		}&lt;br /&gt;
		printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data on $i&amp;quot;, int($daily{$i}{dailyttl}/$mb/$mb), &amp;quot;MB&amp;quot;, int($daily{$i}{mtd}/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;INTERNET USAGE - DETAILED REPORT\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Today&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;This Month&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Raw Data - Download &amp;quot;, int($todaysysin/$mb/$mb), &amp;quot;MB&amp;quot;, int($runsysin/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Raw Data - Upload&amp;quot;, int($todaysysout/$mb/$mb), &amp;quot;MB&amp;quot;, int($runsysout/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Raw Data - Total Usage&amp;quot;, int($todaysysttl/$mb/$mb), &amp;quot;MB&amp;quot;, int($runsysttl/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data - Total Usage&amp;quot;, int($todayipt/$mb/$mb), &amp;quot;MB&amp;quot;, int($runipt/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
	print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	foreach my $i (@iptname) {&lt;br /&gt;
		my $uci = uc $i;&lt;br /&gt;
		print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;$uci USAGE - DETAILED REPORT\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
		printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;Today&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;This Month&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		for my $def ( $daily{$i}{dailyttlin}, $daily{$i}{mtdin}, $daily{$i}{dailyttlout}, $daily{$i}{mtdout}, $daily{$i}{dailyttl}, $daily{$i}{mtd} ) {&lt;br /&gt;
			if ( ! defined $def ) { &lt;br /&gt;
				$def = 0;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data - Download &amp;quot;, int($daily{$i}{dailyttlout}/$mb/$mb), &amp;quot;MB&amp;quot;, int($daily{$i}{mtdout}/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
		printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data - Upload &amp;quot;, int($daily{$i}{dailyttlin}/$mb/$mb), &amp;quot;MB&amp;quot;, int($daily{$i}{mtdin}/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
		printf (RPT &amp;quot;%-36s%17s%3s%17s%3s\n&amp;quot;, &amp;quot;Accounted Data - Total Usage &amp;quot;, int($daily{$i}{dailyttl}/$mb/$mb), &amp;quot;MB&amp;quot;, int($daily{$i}{mtd}/$mb/$mb), &amp;quot;MB&amp;quot;);&lt;br /&gt;
		print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	foreach my $i ( keys %{$daily{$thisday}} ) {&lt;br /&gt;
		my $uci = uc $i;&lt;br /&gt;
		print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;$uci HOSTS - SUMMARY REPORT - VALUES IN MB\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;============================================================================\n&amp;quot;;&lt;br /&gt;
		print RPT &amp;quot;\n&amp;quot;;&lt;br /&gt;
		printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, &amp;quot;IP ADDR&amp;quot;, &amp;quot;DAYDN&amp;quot;, &amp;quot;DAYUP&amp;quot;, &amp;quot;DAYTL&amp;quot;, &amp;quot;MTDDN&amp;quot;, &amp;quot;MTDUP&amp;quot;, &amp;quot;MTDTL&amp;quot;, &amp;quot;Last Seen Host  &amp;quot;, &amp;quot;Host #&amp;quot;);&lt;br /&gt;
#		if ( keys %{$daily{$thisday}{$i}} ) {&lt;br /&gt;
			foreach my $ips (sort ( keys %{$daily{$thisday}{$i}} ) ) {&lt;br /&gt;
				printf (RPT &amp;quot;%-15s%6s%6s%6s%6s%6s%6s%19s%6s\n&amp;quot;, $ips, int($daily{$thisday}{$i}{$ips}{ttlout}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttlin}/$mb/$mb), int($daily{$thisday}{$i}{$ips}{ttl}/$mb/$mb), int($daily{$i}{$ips}{mtdttlout}/$mb/$mb), int($daily{$i}{$ips}{mtdttlin}/$mb/$mb), int($daily{$i}{$ips}{mtdttl}/$mb/$mb), $daily{$thisday}{$i}{$ips}{devname}, $daily{$thisday}{$i}{$ips}{devchange});&lt;br /&gt;
			}&lt;br /&gt;
#		}&lt;br /&gt;
	}&lt;br /&gt;
	close (RPT);&lt;br /&gt;
## Send the report&lt;br /&gt;
&lt;br /&gt;
	open DRPT, &amp;quot;&amp;lt; $rptfile&amp;quot;;&lt;br /&gt;
	my $dailyreport = do { local $/; &amp;lt;DRPT&amp;gt; };&lt;br /&gt;
&lt;br /&gt;
	my $smtp = Net::SMTP-&amp;gt;new ( &amp;quot;$smtpserver&amp;quot;, Hello =&amp;gt; &amp;quot;$mailhello&amp;quot; );&lt;br /&gt;
	$smtp-&amp;gt;auth (&amp;quot;$smtpauthname&amp;quot;,&amp;quot;$smtpauthpass&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;mail (&amp;quot;$mailfrom&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;recipient (&amp;quot;$mailto&amp;quot;, &amp;quot;$mailto2&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;data();&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;From: $mailfrom\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;To: $mailto, $mailto2\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;Subject: Daily BWRprt - Monthly usage is $percentage %\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;Date: $date\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;datasend(&amp;quot;$dailyreport\n&amp;quot;);&lt;br /&gt;
	$smtp-&amp;gt;dataend();&lt;br /&gt;
	$smtp-&amp;gt;quit;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bob</name></author>
	</entry>
</feed>