Tuesday, October 15, 2013

SNMPv3 error Perl Net::SNMP - Time synchronization failed during discovery - Powerware ConnectUPS-MS with firmware version HF

SNMPv3 error Perl Net::SNMP - Time synchronization failed during discovery - Powerware ConnectUPS-MS with firmware version HF
The Net::SNMP module uses the procedure outline in Section 4 of RFC 3414 to perform discovery.
It seems that the Eaton Powerware ConnectUPS-MS NIC running version HF firmware does not enforce timeliness checking and is not responding with a usmStatsNotInTimeWindows Report-PDU during the discovery process.
You can work around this by editing the lib/Net/SNMP.pm and removing the '($this->{_error} =~ /usmStatsNotInTimeWindows/)' part of the if statement.

See the reference to this information here also: http://cpanforum.com/threads/11146

Friday, September 13, 2013

Not an IT post, but still useful. Rock Wall Install

This is the second time I have installed a rock wall in our house. And
not that I am looking forward to doing it again, but just in case I
ever need to find the products we used or if this helps someone else I
wanted to document some of the tips here.
First of all, the Type S mortar is fine for doing this, and it is
cheap, but if you really want an excellent product get this FlexBond
Mortar from Home Depot. It is very expensive, but I absolutely love
it. It is so much more sticky and cleaner to work with. Still make
sure you have a sponge nearby to clean off any drips or excess
mortar. We also used lots of Qtips and paper towels for clearing out
the tiny hard to reach places.
The other tip we learned from the first time is how this Deft Clear
Wood Finish hides and scratches, (we didn't clean off the drips very
well, and tried brushing it off with a hard bristle brush). Well, the
Deft hid the scratches very well and really brought the colors to
life.
One coat was plenty. See the before and after pictures.

Tuesday, April 2, 2013

Updated Wireless Client Tracking

Some of the comments in my older post about RRDTool Wireless Graphing asked for detailed graph creation code. Below is what I use for generating three types of graphs. 1. A single record graph. 2. An Access Point graph with multiple clients displayed. 3. A composite graph that includes all the access points the client has associated to.
First, I query our wireless controller and save an RRD database for each client/ap association. I use an HTML and perl based web page for the user interface. I also save the records to a database in order to query for the most recent records. I use datatables to display the records. And some jqueryui buttons to limit the search filtering.
When the user clicks a row in datatables, the script below processes the request and creates the graphs. The other graphs besides daily are hidden by default, but a click of the button will swap the images. Also, using daterangepicker the user can select a specific range of dates.
Here is an example of the results. This gives us a nice visual of clients moving from one access point to another.
print "Content-type:text/html\n\n";
use Win32::ODBC;
use CGI;
use CGI::Carp qw( fatalsToBrowser );
use CGI qw/:standard/;
use RRDs;

my $GraphType = param('GraphType');
my $ApName = param('ApName');
my $ClientMac = param('ClientMac');
#print "
GraphType: $GraphType"; #print "
ApName: $ApName"; #print "
ClientMac: $ClientMac"; my $dateRange=param('dateRange'); #print $dateRange; my $startDate; my $endDate; my $image_path='../../Charts'; my $web_image_path='/Charts'; my $stats_path='../../Stats'; my $stats_file="2gwlan_".$ClientMac."_".$ApName.".rrd"; my $random_number=time(); my $AreaColor = '54EC48'; my $LineColor = '24BC14'; my @DEF; my $counter = 0; if ($dateRange=~/^$/) { & create_def; & daily; & weekly; & monthly; & yearly; } else { if ($dateRange=~/(\d\d)\-(\d\d)\-(\d\d\d\d)\s\-\s(\d\d)\-(\d\d)\-(\d\d\d\d)/) { $startDate = "$3$1$2"; $endDate = "$6$4$5"; } elsif ($dateRange=~/^(\d\d)\-(\d\d)\-(\d\d\d\d)$/) { $endDate = "$3$1$2"; my $year = $3; my $month = $1; my $day = $2; use Date::Calc qw(Add_Delta_Days); ($year, $month, $day) = Add_Delta_Days($year, $month, $day, -1); $month = "0$month" if $month < 10; $day = "0$day" if $day < 10; $startDate = "$year$month$day"; #print "SD:$startDate"; } & create_def; & custom; } ############## create_def ################ sub create_def { my $query; if ($GraphType=~/Record/) { #Get Single Record & save_def; } else { if ($GraphType=~/Client/) { #Get top 6 most recent client records $query = "SELECT * FROM ClientDetails WHERE ClientMac LIKE '%$ClientMac%' ORDER BY modified DESC"; } elsif ($GraphType=~/AP/) { #Get top 6 most recent AP records $query = "SELECT * FROM ClientDetails WHERE ApName LIKE '%$ApName%' ORDER BY modified DESC"; } my($find_record_db) = new Win32::ODBC('DB') || die "Error connecting:" .Win32::ODBC::Error(); $find_record_db->Sql("$query"); while ($find_record_db->FetchRow()) { my(%data) = $find_record_db->DataHash(); $ApName = $data{'ApName'}; $ClientMac = $data{'ClientMac'}; $stats_file="2gwlan_".$ClientMac."_".$ApName.".rrd"; & save_def; last if $counter == 7; } } } ##################################### ############## save_def ################ sub save_def { $AreaColor = "54EC48" if $counter == 0; $LineColor = "24BC14" if $counter == 0; $AreaColor = "EA644A" if $counter == 1; $LineColor = "CC3118" if $counter == 1; $AreaColor = "DE48EC" if $counter == 2; $LineColor = "B415C7" if $counter == 2; $AreaColor = "7648EC" if $counter == 3; $LineColor = "4D18E4" if $counter == 3; $AreaColor = "ECD748" if $counter == 4; $LineColor = "C9B215" if $counter == 4; $AreaColor = "48C4EC" if $counter == 5; $LineColor = "1598C3" if $counter == 5; $AreaColor = "EC9D48" if $counter == 6; $LineColor = "CC7016" if $counter == 6; push (@DEF,"DEF:DS$counter=$stats_path/$stats_file:snr:AVERAGE:step=300"); push (@DEF,"AREA:DS$counter#$AreaColor:") if $GraphType!~/AP/; push (@DEF,"LINE2:DS$counter#$LineColor:$ApName $ClientMac \\t"); push (@DEF,"GPRINT:DS$counter:LAST:Last\\: %1.lf"); push (@DEF,"GPRINT:DS$counter:MIN:Min\\: %1.lf"); push (@DEF,"GPRINT:DS$counter:MAX:Max\\: %1.lf"); push (@DEF,"GPRINT:DS$counter:AVERAGE:Avg\\: %1.lf\\n"); $counter++; } ##################################### ############## daily ################ sub daily { $graphlength="-24 hours"; RRDs::graph ("$image_path/my_2gwlan_stats_daily_graph.png", "-s $graphlength", "-t 24 Hour Wireless Stats", "-v SNR", "--height=250", "--width=800", "--slope-mode", @DEF, ); if ($ERROR = RRDs::error) {print "$0: unable to generate graph: $ERROR\n";} print "
"; } ################################################# ############## weekly ################ sub weekly { $graphlength="-168 hours"; RRDs::graph ("$image_path/my_2gwlan_stats_weekly_graph.png", "-s $graphlength", "-t Weekly Wireless Stats", "-v SNR", "--height=250", "--width=800", "--slope-mode", @DEF, ); if ($ERROR = RRDs::error) {print "$0: unable to generate graph: $ERROR\n";} print "
"; } ################################################# ############## monthly ################ sub monthly { $graphlength="-720 hours"; RRDs::graph ("$image_path/my_2gwlan_stats_monthly_graph.png", "-s $graphlength", "-t Monthly Wireless Stats", "-v SNR", "--height=250", "--width=800", "--slope-mode", @DEF, ); if ($ERROR = RRDs::error) {print "$0: unable to generate graph: $ERROR\n";} print "
"; } ################################################# ############## yearly ################ sub yearly { $graphlength="-8760 hours"; RRDs::graph ("$image_path/my_2gwlan_stats_yearly_graph.png", "-s $graphlength", "-t Yearly Wireless Stats", "-v SNR", "--height=250", "--width=800", "--slope-mode", @DEF, ); if ($ERROR = RRDs::error) {print "$0: unable to generate graph: $ERROR\n";} print "
"; } ################################################# ############## custom ################ sub custom { RRDs::graph ("$image_path/my_2gwlan_stats_custom_graph.png", #"-s 20110819", #"-e 20110822", "-s $startDate", "-e $endDate", "-t $startDate - $endDate Wireless Stats", "-v SNR", "--height=250", "--width=800", "--slope-mode", @DEF, ); if ($ERROR = RRDs::error) {print "$0: unable to generate graph: $ERROR\n";} print "
"; } #################################################

Thursday, March 21, 2013

Tomato VPN and OpenVPN client cannot connect to LAN server using hostname

I have been trying to figure out how to allow an application to connect using the hostname. 
The application works fine on the LAN, but when the user goes to a remote location and uses the OpenVPN GUI client to connect to the network the hostname no longer works. 
If I edit the hosts file and add an entry for example: 10.10.10.10 servername 
Then I can get to servername just fine, however I didn't want to edit the hosts file on all workstations. 
So in looking for another answer, I went into the Basic menu in tomato and the Identification menu. 
In the Domain Name field it was blank, I made up some random domain name and saved the settings. 
I thought I would have to use the fully qualified domain name to connect. (ie: servername.my.private.lan) But after reconnecting to the VPN I was simply able to use the hostname. (ie: servername) to connect and the application now works fine. 



Tuesday, February 26, 2013

Tomato E1000 Firmware issues

I have been deploying tomato shibby firmware version 1.04 for use in
various client offices with wireless disabled, so I had not noticed
these issues. I also, haven't experienced the same reliability that I
have with polar tomato, or tomato raf that I run on many different
networks with linksys e2000, wrt54gl, and wrt610n routers.
I noticed severe slowness on Internet speedtest sites using tomato
shibby 1.04. I tried upgrading to 1.06, but it would not install.
1.05 resulted in being unable to access the GUI page after changing
the admin settings. Using the reset button allowed me to get back in
and after a number of attempts I upgraded the firmware to the tomato
toastman version shown below.
1.28.0501
This version worked well, but seems to have the same problem as 1.04
with wan speeds.
Under advanced wireless settings, if it is set to WMM enabled then I
get fast speeds between LAN and wifi devices. Like 35Mbps as shown in
the wifiperf screenshot.
However wan speedtest is about 0.03 Mbps download.
If I disable the WMM, I get wan speeds of 22 Mbps on my Comcast 25M
connection, but LAN speeds drop to around 15Mbps.
So this is the setting I am using for now.
I'm not sure what else to try in order to improve this.
In researching things I noticed the linksys e1200 and e1500 and e1550
models are in the $25 - $60 range and there is now tomato raf support
for these devices. I'm off to order one of these to test for future
deployments.