Problems and solutions to many of the problems discovered during network troubleshooting. Detailed information related to Perl, custom SNMP network management, and other details.
Tuesday, October 15, 2013
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
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


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
Tuesday, February 26, 2013
Tomato E1000 Firmware issues
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.
Friday, November 9, 2012
Ubiquiti AirCam save snapshots to web page and refresh every 30 seconds
Tuesday, October 23, 2012
Use WMIC to get logged in user from remote computer
The Command:
C:\>WMIC /NODE:’Hostname' ComputerSystem Get Username,Name
The Results:
Name UserName
Hostname Domain\User.Name
The node can be the DNS name, or IP Address, also a list can be used as well.
I would have really liked to use this command to query thousands of nodes, however through experimentation the tool seemed to crash after 30 or 40 hosts.
I tried the /FAILFAST:ON and /FAILFAST:50 options with some improvements, but nothing solid.
Please comment if you have used this tool successfully for a large list of nodes.
Thanks!
List Computers in a domain
dsquery computer domainroot -name ws* -o rdn
By default this will be limited to 100 results, use the –limit option to display more results.
Thursday, May 31, 2012
How to install Victek Tomato on Linksys WRT160N V3.0
http://www.dd-wrt.com/site/support/router-database
dd-wrt.v24-14896_NEWD-2_K2.6_mini.bin
reboot, then install victek tomato
I had to use the reset button prior to logging in.
http://victek.is-a-geek.com/tomatoen.html
tomato-K26-1.28.9006MIPSR2_RAF-Std-NOCAT.trx
*Updated to run tomato RAF on 10/31/2013
boot wrt160n
login to 192.168.1.1
default username is admin
default password is admin
upgrade to linksys firmware version 3.0.03
firmware version: v3.0.00 failed to upgrade to dd-wrt after 2 percent complete
use this file from the linksys web site: WRT160Nv3_0_03_003.code1.bin
after reloading go to administration page
firmware upgrade
upgrade to dd-wrt.v24-14896_NEWD-2_K2.6_mini.bin
change username and password to admin / admin
upgrade to tomato RAF use the reset to defaults option
upgrade to tomato-K26-1.28.9006MIPSR2_RAF-Std-NOCAT.trx
login to tomato raf
Sunday, April 3, 2011
A couple of very useful web tools
premailer is a great tool for converting html code into mail formatted as html.
Tips: Use outlook express to send html emails.
Create a new message, then click insert, text from file, select the html file.
A div with a background image will not display in gmail web viewer but it does display on iphone email. So use a normal img tag, and test with various email clients.
http://www.dotemplate.com/
dotemplate.com is very cool for creating a quick css template for a web site.
Thursday, September 23, 2010
Cisco access point wireless configuration snippet
conf t dot11 ssid temp authentication open authentication key-management wpa guest-mode wpa-psk ascii tempkey1 ! ..... interface Dot11Radio0 encryption mode ciphers aes-ccm ssid temp !
I am always looking to enable dhcp also.
Here is how you do it, although I think I have memorized it now.
ip dhcp pool test network 192.168.2.0 255.255.255.0 !
Tuesday, September 14, 2010
Windows Command Line to show members of a local group
Pretty simple, but I only use this once every six months and I forget the command.
Maybe posting this will help me remember.
Sunday, June 20, 2010
Changed the template today and added syntax highlights
Thanks cyberack!
http://www.cyberack.com/2007/07/adding-syntax-highlighter-to-blogger.html
Win32::ODBC bug in Windows 7
ConfigDSN(): Could not add temporary DSN[911] []
"Illegal use of reserved characters []{}(),?*!@;"
The script is installed via Cava Packager and a custom Inno Setup script.
By default it gets installed into the Program Files (x86) folder of windows 7.
This is the line I am having problems with, which is trying to add a DSN for the Database.
Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType,("DSN=$DSN", "Description=Win32 ODBC DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD=")) or die "ConfigDSN(): Could not add temporary DSN" . Win32::ODBC::Error();
The problem wasn't obvious at first, until I realized the $Dir variable contained the text 'Program Files (x86)'.
And the Win32::ODBC module apparently has a problem with the () around the x86 of this folder.
To resolve the problem I decided to just change the default location of the Inno Setup script from {pf} the environement variable for program files and instead hard coded it as C:\Program Files.
As always, Enjoy!
Friday, June 18, 2010
Find operating system version in perl
my $osname = Win32::GetOSName();
my ( $osvername, $major, $minor, $id ) = Win32::GetOSVersion();
print "osname: $osname\n";
print "osvername: $osvername\n";
print "major: $major\n";
print "minor: $minor\n";
print "id: $id\n";

