Contributed by Anonymous Monk
on Apr 05, 2001 at 19:46 UTC
Q&A
> network programming
Answer: Can I access NetWare volume stats using perl on NT? contributed by Coyote There are a couple of options to do this. The simplest way to get volume stats under netware would be to grab the output from NDIR utility (ndir /SPA) and parse it in perl. Another way to do it would be to use the NDSm perl modules, a commercial product that wraps the Netware Client32 libraries. A third way would be to grab the ActiveX controls for Netware from http://developer.novell.com and use Win32::OLE from perl to talk to the ActiveX controls. Here's a link to the documentation for the controls.
I've used both the the NDSm modules and the ActiveX/COM kludge in Netware related sysadmin scripts over the years, but I find that munging the output from Novell's powerful, but needlessly complex command line utilities usually works best. | Answer: Can I access NetWare volume stats using perl on NT? contributed by saprice Thanks for the links. I have around 100 NW4 servers that I need to monitor volume utilization (free space) on. I've been using an NDIR parsing script until now, but with volumes being added and deleted its making maintaining the script a pain. I'll look at the OLE route and see if I can hack something together with it.
Regards
sp | Answer: Can I access NetWare volume stats using perl on NT? contributed by jbodoni Use Net::SNMP! If you've got Netware 5.1 or later, SNMP is installed.
#!c:\perl\bin\perl.exe -w
# props to http://myweb.facstaff.wwu.edu/~riedesg/sysadmin1138/ for mo
+st of this code!
use strict;
use warnings;
use Net::SNMP;
use Time::Seconds;
use Time::Piece;
# provide your SNMP community string and your list of servers below
my $community = 'public';
my @servers = uc ( shift ) || qw/FS1 FS2 FS3/; # lets you specify a s
+erver on the command line for quick query
# end of user-provided information
my $timenow = localtime; # Mon Aug 26 14:30:09 2002
$enddate) = map $_->strftime('%Y-%m-%d'), $timenow, $weeks, $start, $e
+nd;
my ($timestamp) = map $_->strftime('%Y-%m-%d '), $timenow;
my @report;
my $NWBaseOID = ".1.3.6.1.4.1.23.2.28.2.14"; # .iso.org.dod.interne
+t.private.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTabl
+e
my $NWNameOID = $NWBaseOID . ".1.2."; # .iso.org.dod.internet.p
+rivate.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTable.n
+wFSVolEntry.nwVolPhysicalName
my $NWVolSizeOID = $NWBaseOID . ".1.3."; # .iso.org.dod.internet.pr
+ivate.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTable.nw
+FSVolEntry.nwVolSize in KB
my $NWVolFreeOID = $NWBaseOID . ".1.4."; # .iso.org.dod.internet.pr
+ivate.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTable.nw
+FSVolEntry.nwVolFree in KB
my $NWVolPurgableOID = $NWBaseOID . ".1.5."; # .iso.org.dod.interne
+t.private.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTabl
+e.nwFSVolEntry.nwVolFreeable in KB
my $NWVolMountedOID = $NWBaseOID . ".1.8."; # .iso.org.dod.internet
+.private.enterprises.novell.mibDoc.nwServer.nwFileSystem.nwFSVolTable
+.nwFSVolEntry.nwVolMounted, 1=mounted, 2=unmounted
for my $servername (@servers) {
my ($Session, $Error) = Net::SNMP->session( -hostname => $serverna
+me, -community => $community );
my $Table = $Session->get_table( -baseoid => $NWBaseOID );
print STDERR "No info for $servername!\n" unless defined $Table;
push @report, "$timestamp\t$servername / ERR\tERR\n" unless define
+d $Table;
next unless defined $Table;
for (my $drivenumber = 1; $drivenumber < 256 ; $drivenumber++) {
+ # Cluster drives start at 255 and work DOWN
next unless $Table -> { $NWVolMountedOID . $drivenumber };
next if $Table -> { $NWNameOID . $drivenumber } =~ /_ADMIN/;
my $diskname = $Table -> { $NWNameOID . $drivenumber}.":";
+# Appends a ":" for backward compatibility
my $totalsize = $Table -> { $NWVolSizeOID . $drivenumber};
my $freespace = $Table -> { $NWVolFreeOID . $drivenumber};
my $utilized = 100 - int ( $freespace / $totalsize * 100 );
push @report, "$servername / $diskname\t$utilized\n";
}
$Session->close();
}
print sort @report;
| Answer: Can I access NetWare volume stats using perl on NT? contributed by rchiav I'd suggest using ADSI. It requires Win32::OLE. If you need to install ADSI, go here. The book "WIN32 PERL SCRIPTING, The Administrators Handbook" covers some of the basics of ADSI with Perl, though it doesn't have any NDS specific examples.
Unfortunately I've never used Perl to interface with NDS so I can't be much more help than this.
Good Luck,
Rich |
Please (register and) log in if you wish to add an answer
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
Log In?
|
|
Chatterbox?
|
How do I use this? | Other CB clients
|
Other Users?
|
Others taking refuge in the Monastery: (6) As of 2019-12-09 13:03 GMT
|
Sections?
|
|
Information?
|
|
Find Nodes?
|
|
Leftovers?
|
|
Voting Booth?
|
No recent polls found
|
Notices?
|
|
|