Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
check_files.pl - Check files age and number of files in a directory
0.416
2012-05-05
- Nagios 1.x
- Nagios 2.x
- Nagios 3.x
- Nagios XI
GPL
90041
File | Description |
---|---|
check_files.pl | check_files.pl - version 0.36 (Sep 2012) |
check_files.pl | check_files.pl - version 0.416 (May 03, 2013) |
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
For help and list of options do:
./check_files.pl --help
The documentation in the help should be enough to get you started. The plugin despite large amount of code (to support threshold spec) is not that complex - all it does is sum number of files and alert if its too many, plus optionally track what is the oldest file.
The plugin is based on check_netstat.pl 0.35 and as such shares threshold spec syntax with all my other plugins and supports slightly extended nagios plugin specification threshold syntax.
The plugin itself does "ls -l" and parses that data. Depending on the options it can also add "-R" for recursion or may try to list only specific files you're looking for for large directories. I've chosen parsing "ls -l" over doing lower level direntry calls because parsing allows to use the plugin to process results from a remote system where all you need to do is execute "ls -l". To support such use the plugin has "-I" parameter telling plugin to process STDIN data as "ls -l" as well as "-C" parameter which allows to specify command in place of "ls -l" so you can substitute ssh or something else in there.
Example of use is:
define command {
command_name check_err_files
command_line $USER1$/check_files.pl -f -D $ARG1$ -F $ARG2$ -w $ARG3$ -c $ARG4$
}
define service{
use prod-service
host_name you_know_who
service_description File Checks for error files
check_command check_err_files!/var/someplace/somewhere!"*.error"!2!5
}
If executing this remotely by snmp (which is rare, but I do it this way) example is:
define command {
command_name check_bysnmp_errfiles
command_line $USER1$/check_by_snmp.pl -E someplace_fileslist -H $HOSTADDRESS$ -l snmpuser -x 'onesecret' -L sha,aes -X 'anothersecret' -S --exec $USER1$/check_files.pl -f -I -F $ARG1$ -w $ARG2$ -c $ARG3$
}
./check_files.pl --help
The documentation in the help should be enough to get you started. The plugin despite large amount of code (to support threshold spec) is not that complex - all it does is sum number of files and alert if its too many, plus optionally track what is the oldest file.
The plugin is based on check_netstat.pl 0.35 and as such shares threshold spec syntax with all my other plugins and supports slightly extended nagios plugin specification threshold syntax.
The plugin itself does "ls -l" and parses that data. Depending on the options it can also add "-R" for recursion or may try to list only specific files you're looking for for large directories. I've chosen parsing "ls -l" over doing lower level direntry calls because parsing allows to use the plugin to process results from a remote system where all you need to do is execute "ls -l". To support such use the plugin has "-I" parameter telling plugin to process STDIN data as "ls -l" as well as "-C" parameter which allows to specify command in place of "ls -l" so you can substitute ssh or something else in there.
Example of use is:
define command {
command_name check_err_files
command_line $USER1$/check_files.pl -f -D $ARG1$ -F $ARG2$ -w $ARG3$ -c $ARG4$
}
define service{
use prod-service
host_name you_know_who
service_description File Checks for error files
check_command check_err_files!/var/someplace/somewhere!"*.error"!2!5
}
If executing this remotely by snmp (which is rare, but I do it this way) example is:
define command {
command_name check_bysnmp_errfiles
command_line $USER1$/check_by_snmp.pl -E someplace_fileslist -H $HOSTADDRESS$ -l snmpuser -x 'onesecret' -L sha,aes -X 'anothersecret' -S --exec $USER1$/check_files.pl -f -I -F $ARG1$ -w $ARG2$ -c $ARG3$
}
Reviews (3)
byfuture001, April 25, 2016
1st - I needed to comment out lines 742-745 too!
2nd and worth: I'm would like to check mounted Windows directories and there are a lot of files with 'spaces'. These files are ignored by the script.
Example: -F *.jpg ... in dir are 5 files, and only 2 are counted because in 3 are spaces like "hallo world.jpg" or "hallo-world 001.jpg"
Please fix it - Thanks!
2nd and worth: I'm would like to check mounted Windows directories and there are a lot of files with 'spaces'. These files are ignored by the script.
Example: -F *.jpg ... in dir are 5 files, and only 2 are counted because in 3 are spaces like "hallo world.jpg" or "hallo-world 001.jpg"
Please fix it - Thanks!
bydappa_don, February 3, 2015
[root@nagios-01]# /usr/local/nagios/libexec/check_files.pl -D /some/directory/ -F '*.txt' -c ! 27 -r -L "File Count"
File Count CRITICAL - *.bk is 27 (not equal to )
File Count CRITICAL - *.bk is 27 (not equal to )
byachoo, November 22, 2013
1 of 1 people found this review helpful
This works great except I needed to comment out lines 742-745.
if (!defined($o_stdin) && !close(SHELL_DATA)) {
print "UNKNOWN ERROR - execution of $shell_command resulted in an error $? - $!";
exit $ERRORS{'UNKNOWN'};
}
These lines are giving the me the error "UNKNOWN ERROR - execution of LANG=C ls -l -R resulted in an error 512 - ' on my system (RHEL6, perl5 (revision 5 version 10 subversion 1)).
'UNKNOWN ERROR - execution of LANG=C ls -l -R resulted in an error 512 - Bad file descriptor' is the error if I just do a 'close(SHELL_DATA)'
if (!defined($o_stdin) && !close(SHELL_DATA)) {
print "UNKNOWN ERROR - execution of $shell_command resulted in an error $? - $!";
exit $ERRORS{'UNKNOWN'};
}
These lines are giving the me the error "UNKNOWN ERROR - execution of LANG=C ls -l -R resulted in an error 512 - ' on my system (RHEL6, perl5 (revision 5 version 10 subversion 1)).
'UNKNOWN ERROR - execution of LANG=C ls -l -R resulted in an error 512 - Bad file descriptor' is the error if I just do a 'close(SHELL_DATA)'