[Mon-commit] mon-contrib/monitors/tftp tftp.monitor,NONE,1.1
Brought to you by:
trockij
|
From: David N. <vi...@us...> - 2005-02-19 17:48:16
|
Update of /cvsroot/mon/mon-contrib/monitors/tftp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11336 Added Files: tftp.monitor Log Message: Adding tftp monitoring script --- NEW FILE: tftp.monitor --- #!/usr/bin/perl -w # # This TFTP test script will attempt to fetch a file from a tftp server, # and will verify it receives a non-empty file. # # Requires Net::TFTP # # Arguments: '-f filename hostname [...]' # # Author: David Nolan, Carnegie Mellon University, Computing Services # Contact: ne...@an... # # Copyright (c) 2002 Carnegie Mellon University. All rights reserved. # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. The name "Carnegie Mellon University" must not be used to endorse or # promote products derived from this software without prior written # permission. For permission or any legal details, please contact: # Office of Technology Transfer # Carnegie Mellon University # 5000 Forbes Avenue # Pittsburgh, PA 15213-3890 # (412) 268-4387, fax: (412) 268-7395 # tec...@an... # # 4. Redistributions of any form whatsoever must retain the following # acknowledgment: "This product includes software developed by Computing # Services at Carnegie Mellon University (http://www.cmu.edu/computing/)." # # CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, # IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE FOR ANY SPECIAL, # INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. use Net::TFTP; use Getopt::Std; getopt('f'); if (!defined $opt_f) { print "\nNo file to fetch, aborting.\n"; exit 0; } foreach $host (@ARGV) { eval { if (-f "/tmp/tftp.$$") { unlink "/tmp/tftp.$$"; } my $tftp = Net::TFTP->new($host, BlockSize => 1024); $tftp->ascii; $tftp->get($opt_f, "/tmp/tftp.$$"); my $err = $tftp->error; if ($err) { push @failures, $host; push @longerr, "$host: TFTP error $err"; } else { my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat("/tmp/tftp.$$"); if (!$size) { push @failures, $host; push @longerr, "$host: Zero length file received"; } } }; if ($EVAL_ERROR && ($EVAL_ERROR =~ /Timeout/ )) { push @failures, $host; push @longerr, "$host: Request timed out."; } elsif ($EVAL_ERROR) { push @longerr, "$host: $EVAL_ERROR"; push @failures, $host; } } if (-f "/tmp/tftp.$$") { unlink "/tmp/tftp.$$"; } if (!@failures) { exit 0; } print join(" ", @failures),"\n"; print join("\n", @longerr), "\n"; exit scalar @failures; |