Linux server.edchosting.com 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
LiteSpeed
Server IP : 75.98.162.185 & Your IP : 216.73.216.163
Domains :
Cant Read [ /etc/named.conf ]
User : goons4good
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib64 /
nagios /
plugins /
Delete
Unzip
Name
Size
Permission
Date
Action
eventhandlers
[ DIR ]
drwxr-xr-x
2024-03-10 06:52
a2_csf_modsecsync.mvps.mdedi
1.27
KB
-rwxr-xr-x
2025-09-10 09:31
a2_customerview.sh.shared
1.21
KB
-rwxr-xr-x
2025-09-10 09:31
a2_nf_conntrack_count.sh.all
977
B
-rwxr-xr-x
2025-09-10 09:31
a2_postgresql-monitor.shared
1.23
KB
-rwxr-xr-x
2025-09-10 09:31
a2_ram.shared.mdedi.bmi
611
B
-rwxr-xr-x
2025-09-10 09:31
a2_sssd_service_check.sh.all
1.4
KB
-rwxr-xr-x
2025-09-10 09:31
a2_system-updates.all
2.18
KB
-rwxr-xr-x
2025-09-10 09:31
a2_temperature_check.shared.bmi
3.17
KB
-rwxr-xr-x
2025-09-10 09:31
a2_user_mem.shared
1.13
KB
-rwxr-xr-x
2025-09-10 09:31
a2_yum_processes.shared
835
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_backup_network
844
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_backups
2.64
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_cagefs.shared.mvps.mdedi
762
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_cagefs_503_errors
2.96
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_cpdavd_cpu.sh
701
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_cpu_throttle.shared
1.61
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_dbgov.shared
1.23
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_dedi_nvme.mdedi
894
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_devnull-perms.shared
161
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_dimm.shared
1.49
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_disk.sh
2.05
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_dmi.sh.all
2.38
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_dnsdist_cache.sh
298
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_dnsdist_health.sh
270
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_dnsdist_pools.sh
414
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_dnsdist_proc.sh
210
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_dovecot
191
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_extra_ips.shared
854
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_fsstate.sh.all
2.28
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_fw.sh.internal
2.11
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_fw.sh.shared
1.04
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_grub.sh.all
1.22
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_httpdconf.shared
1.16
KB
-rwxr-xr-x
2025-04-15 08:48
check_a2_ifspeed.shared
784
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_imap_auth
1.2
KB
-rwxr-xr-x
2025-02-19 06:03
check_a2_imunify_service
910
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_ipaliases.shared
443
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_ipastatus.sh
2.16
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_ipmi_ip.sh.shared
565
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_jbk_client_limits.sh
1.13
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_jetbackup.sh
12.08
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_largelogs.shared
966
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_le_certs.sh.saltmaster1
1.02
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_load.php
618
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_long_mysql_queries
1.22
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_mailqueue.mvps.mdedi
1.26
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_memlimits-on.shared
458
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_mod-passenger.shared
516
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_monitor-randomize_sqlroot_password_cron.shared.mvps.mdedi
322
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_mysql-monitor.shared.mvps.mdedi
2.62
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_mysql-replication.sh
1.33
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_mysql_tmp_size
242
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_olderdrive_health.all
2.25
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_omni_mysql_backup.sh
1.15
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_omni_pxe_https_check.sh
1.27
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_omni_saltmaster1_authcheck.sh
2.76
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_omni_website.sh
1.01
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_outbound_nat.sh
436
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_packets.mvps
1.73
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_pdns
462
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_php_versions.shared
3.04
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_redis_opcache.shared
1.39
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_salt_minion_service
196
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_salt_running.all
1.83
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_saltmaster_api.sh
1.13
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_smart.py.all
15.54
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_softy_version.sh.shared.mvps.mdedi
1.09
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_vps_memory.sh
411
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_vz7-ikvm_backup.sh
1.2
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_whm_ssl
874
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_whmcs_db_mysql-replication.sh
2.19
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_whmcs_nginx_connections.sh
745
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_whmcs_phpfpm_status.sh
1.6
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_whmcs_th_network.sh
773
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_whmcs_virtualizor.sh
534
B
-rwxr-xr-x
2025-09-10 09:31
check_a2_xen_guest_vm.sh.flexdedi
3.11
KB
-rwxr-xr-x
2025-09-10 09:31
check_a2_zpool.sh
1.31
KB
-rwxr-xr-x
2025-09-10 09:31
check_aad_ldaps
2.09
KB
-rwxr-xr-x
2025-11-03 05:31
check_apache_status.pl
6.09
KB
-rwxr-xr-x
2025-09-10 09:31
check_backup_zpool
17.68
KB
-rwxr-xr-x
2025-09-10 09:31
check_backuply.py
5.77
KB
-rwxr-xr-x
2025-09-10 09:31
check_backups.php
576
B
-rwxr-xr-x
2025-09-10 09:31
check_breeze
2.29
KB
-rwxr-xr-x
2024-04-11 07:27
check_by_ssh
61.16
KB
-rwxr-xr-x
2024-04-11 07:27
check_clamd
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_cluster
40.35
KB
-rwxr-xr-x
2024-04-11 07:27
check_cpu
467
B
-rwxr-xr-x
2025-09-10 09:31
check_cpu_interrupts
353
B
-rwxr-xr-x
2025-09-10 09:31
check_cpu_steal
313
B
-rwxr-xr-x
2025-09-10 09:31
check_crond
227
B
-rwxr-xr-x
2025-09-10 09:31
check_csf
535
B
-rwxr-xr-x
2025-09-10 09:31
check_dhcp
56.75
KB
-rwsr-x---
2024-04-11 07:27
check_dig
56.83
KB
-rwxr-xr-x
2024-04-11 07:27
check_disk
86.26
KB
-rwxr-xr-x
2024-04-11 07:27
check_disk_smb
9.9
KB
-rwxr-xr-x
2024-04-11 07:27
check_dns
249
B
-rwxr-xr-x
2025-09-10 09:31
check_dummy
31.76
KB
-rwxr-xr-x
2024-04-11 07:27
check_elastic
10.49
KB
-rwxr-xr-x
2025-09-10 09:31
check_elasticsearch
335
B
-rwxr-xr-x
2025-09-10 09:31
check_enhance_backup
495
B
-rwxr-xr-x
2025-09-10 09:31
check_exim
184
B
-rwxr-xr-x
2025-09-10 09:31
check_exim_spam.sh
3.44
KB
-rwxr-xr-x
2025-09-10 09:31
check_eximqueue.sh
1.11
KB
-rwxr-xr-x
2025-09-10 09:31
check_file_age
4.95
KB
-rwxr-xr-x
2024-04-11 07:27
check_flexlm
6.35
KB
-rwxr-xr-x
2024-04-11 07:27
check_fping
56.76
KB
-rwsr-x---
2024-04-11 07:27
check_ftp
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_ftpd
199
B
-rwxr-xr-x
2025-09-10 09:31
check_game
44.5
KB
-rwxr-xr-x
2024-04-11 07:27
check_hpjd
52.5
KB
-rwxr-xr-x
2024-04-11 07:27
check_http
106.2
KB
-rwxr-xr-x
2024-04-11 07:27
check_icmp
68.39
KB
-rwsr-x---
2024-04-11 07:27
check_ide_smart
44.57
KB
-rwsr-x---
2024-04-11 07:27
check_imap
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_iowait
587
B
-rwxr-xr-x
2025-09-10 09:31
check_ipaliases.py
2.14
KB
-rwxr-xr-x
2025-09-10 09:31
check_ipmi_sensor
39.45
KB
-rwxr-xr-x
2025-09-10 09:31
check_ircd
6.82
KB
-rwxr-xr-x
2024-04-11 07:27
check_jabber
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_jetbackup.py
12.8
KB
-rwxr-xr-x
2025-09-10 09:31
check_jetbackup_alerts
5.35
KB
-rwxr-xr-x
2025-09-10 09:31
check_jetbackup_license.sh
581
B
-rwxr-xr-x
2025-09-10 09:31
check_jetbackup_mongodb
915
B
-rwxr-xr-x
2025-09-10 09:31
check_jetbackup_queue
4.83
KB
-rwxr-xr-x
2025-09-10 09:31
check_kernel
393
B
-rwxr-xr-x
2025-09-10 09:31
check_ldap
61.07
KB
-rwxr-xr-x
2024-04-11 07:27
check_ldaps
61.07
KB
-rwxr-xr-x
2024-04-11 07:27
check_litespeed
2.43
KB
-rwxr-xr-x
2025-09-10 09:31
check_load
48.39
KB
-rwxr-xr-x
2024-04-11 07:27
check_load.php
422
B
-rwxr-xr-x
2025-09-10 09:31
check_load.py
401
B
-rwxr-xr-x
2025-09-10 09:31
check_local_users
2.01
MB
-rwxr-xr-x
2025-09-10 09:31
check_log
7.99
KB
-rwxr-xr-x
2024-04-11 07:27
check_lvm_thinpools
2.48
KB
-rwxr-xr-x
2025-09-10 09:31
check_mailq
25
KB
-rwxr-xr-x
2024-04-11 07:27
check_managed.sh
5.85
KB
-rwxr-xr-x
2025-09-10 09:31
check_md5files
1.2
KB
-rwxr-xr-x
2025-09-10 09:31
check_md_raid
782
B
-rwxr-xr-x
2025-09-10 09:31
check_megaraid_sas
6.75
KB
-rwxr-xr-x
2025-09-10 09:31
check_memcached
184
B
-rwxr-xr-x
2025-09-10 09:31
check_meminfo
2.79
KB
-rwxr-xr-x
2025-09-10 09:31
check_memory
330
B
-rwxr-xr-x
2025-09-10 09:31
check_memory.py
1.06
KB
-rwxr-xr-x
2025-09-10 09:31
check_mrtg
44.42
KB
-rwxr-xr-x
2024-04-11 07:27
check_mrtgtraf
44.36
KB
-rwxr-xr-x
2024-04-11 07:27
check_mysql
52.91
KB
-rwxr-xr-x
2024-04-11 07:27
check_mysql_all.sh
6.53
KB
-rwxr-xr-x
2025-09-10 09:31
check_mysql_connections
5.89
KB
-rwxr-xr-x
2025-09-10 09:31
check_mysql_engines
603
B
-rwxr-xr-x
2025-09-10 09:31
check_mysql_log
170
B
-rwxr-xr-x
2025-09-10 09:31
check_mysql_memory
733
B
-rwxr-xr-x
2025-09-10 09:31
check_mysql_processes
346
B
-rwxr-xr-x
2025-09-10 09:31
check_mysql_query
48.71
KB
-rwxr-xr-x
2024-04-11 07:27
check_nagios
44.34
KB
-rwxr-xr-x
2024-04-11 07:27
check_nimbus.sh
2.25
KB
-rwxr-xr-x
2025-09-10 09:31
check_nntp
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_nntps
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_nscp_api
5.84
MB
-rwxr-xr-x
2024-10-29 07:19
check_nt
56.65
KB
-rwxr-xr-x
2024-04-11 07:27
check_ntp
56.84
KB
-rwxr-xr-x
2024-04-11 07:27
check_ntp.pl
14.53
KB
-rwxr-xr-x
2024-04-11 07:27
check_ntp_peer
56.91
KB
-rwxr-xr-x
2024-04-11 07:27
check_ntp_time
52.84
KB
-rwxr-xr-x
2024-04-11 07:27
check_nwstat
68.52
KB
-rwxr-xr-x
2024-04-11 07:27
check_oracle
9.27
KB
-rwxr-xr-x
2024-04-11 07:27
check_overcr
48.49
KB
-rwxr-xr-x
2024-04-11 07:27
check_partitions
434
B
-rwxr-xr-x
2025-09-10 09:31
check_pgsql
56.95
KB
-rwxr-xr-x
2024-04-11 07:27
check_ping
60.77
KB
-rwxr-xr-x
2024-04-11 07:27
check_pop
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_postfix
193
B
-rwxr-xr-x
2025-09-10 09:31
check_postfix_queue
930
B
-rwxr-xr-x
2025-09-10 09:31
check_postgres
445.78
KB
-rwxr-xr-x
2025-09-10 09:31
check_procs
60.99
KB
-rwxr-xr-x
2024-04-11 07:27
check_proxmox.sh
928
B
-rwxr-xr-x
2025-09-10 09:31
check_proxmox_backups.sh
1.86
KB
-rwxr-xr-x
2025-09-10 09:31
check_qps_dnsdist.sh
1.68
KB
-rwxr-xr-x
2025-09-10 09:31
check_real
48.59
KB
-rwxr-xr-x
2024-04-11 07:27
check_redis.sh
175
B
-rwxr-xr-x
2025-09-10 09:31
check_resolver.py
3.27
KB
-rwxr-xr-x
2025-09-10 09:31
check_rpc
9.45
KB
-rwxr-xr-x
2024-04-11 07:27
check_rpmdb
690
B
-rwxr-xr-x
2025-09-10 09:31
check_sensors
1.59
KB
-rwxr-xr-x
2024-04-11 07:27
check_service.sh
9.94
KB
-rwxr-xr-x
2025-09-10 09:31
check_simap
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_smart.pl
35.16
KB
-rwxr-xr-x
2025-09-10 09:31
check_smartarray.py
10.07
KB
-rwxr-xr-x
2025-09-10 09:31
check_smartermail_queue
1.5
KB
-rwxr-xr-x
2025-09-10 09:31
check_smtp
69.23
KB
-rwxr-xr-x
2024-04-11 07:27
check_snmp
77.59
KB
-rwxr-xr-x
2024-04-11 07:27
check_spop
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_ssh
48.59
KB
-rwxr-xr-x
2024-04-11 07:27
check_ssmtp
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_sssd
1.32
KB
-rwxr-xr-x
2025-09-10 09:31
check_supervisord.py
15.71
KB
-rwxr-xr-x
2025-09-10 09:31
check_swap
44.33
KB
-rwxr-xr-x
2024-04-11 07:27
check_tcp
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_time
48.55
KB
-rwxr-xr-x
2024-04-11 07:27
check_tmp
210
B
-rwxr-xr-x
2025-09-10 09:31
check_udp
61.13
KB
-rwxr-xr-x
2024-04-11 07:27
check_ups
52.61
KB
-rwxr-xr-x
2024-04-11 07:27
check_users
40.2
KB
-rwxr-xr-x
2024-04-11 07:27
check_vm_status.sh
635
B
-rwxr-xr-x
2025-09-10 09:31
check_wave
3.19
KB
-rwxr-xr-x
2024-04-11 07:27
check_webserver_status
2.93
KB
-rwxr-xr-x
2025-09-10 09:31
check_yum_updates
600
B
-rwxr-xr-x
2025-09-10 09:31
check_zfs
17.68
KB
-rwxr-xr-x
2025-09-10 09:31
check_zpool_usage.sh
885
B
-rwxr-xr-x
2025-09-10 09:31
md5list
61
B
-rw-r--r--
2025-09-10 09:31
negate
40.18
KB
-rwxr-xr-x
2024-04-11 07:27
urlize
35.97
KB
-rwxr-xr-x
2024-04-11 07:27
utils.pm
2.05
KB
-rw-r--r--
2024-04-11 07:27
utils.sh
2.73
KB
-rwxr-xr-x
2024-04-11 07:27
vz7_check_a2_backup_timer_enabled.sh
605
B
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_backups-check.sh
8.4
KB
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_backups-running.sh
2.18
KB
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_fw.sh
1.37
KB
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_ifspeed.sh
1.04
KB
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_license.sh
749
B
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_template_count.sh
856
B
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_templates_mount.sh
940
B
-rwxr-xr-x
2025-09-10 09:31
vz7_check_a2_zombie-procs.sh
768
B
-rwxr-xr-x
2025-09-10 09:31
vz7_check_nfs_kill.sh
1000
B
-rwxr-xr-x
2025-09-10 09:31
Save
Rename
#!/usr/bin/perl -w # check_megaraid_sas Nagios plugin # Copyright (C) 2007 Jonathan Delgado, delgado@molbio.mgh.harvard.edu # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # Nagios plugin to monitor the status of volumes attached to a LSI Megaraid SAS # controller, such as the Dell PERC5/i and PERC5/e. If you have any hotspares # attached to the controller, you can specify the number you should expect to # find with the '-s' flag. # # The paths for the Nagios plugins lib and MegaCli may need to me changed. # # Code for correct RAID level reporting contributed by Frode Nordahl, 2009/01/12. # # $Author: delgado $ # $Revision: #12 $ $Date: 2010/10/18 $ use strict; use Getopt::Std; use lib qw(/usr/lib/nagios/plugins /usr/lib64/nagios/plugins); # possible pathes to your Nagios plugins and utils.pm use utils qw(%ERRORS); our($opt_h, $opt_s, $opt_o, $opt_m, $opt_p); getopts('hs:o:p:m:'); if ( $opt_h ) { print "Usage: $0 [-s number] [-m number] [-o number]\n"; print " -s is how many hotspares are attached to the controller\n"; print " -m is the number of media errors to ignore\n"; print " -p is the predictive error count to ignore\n"; print " -o is the number of other disk errors to ignore\n"; exit; } my $megaclibin = '/opt/MegaRAID/MegaCli/MegaCli64'; # the full path to your MegaCli binary my $megacli = "sudo $megaclibin"; # how we actually call MegaCli my $megapostopt = '-NoLog'; # additional options to call at the end of MegaCli arguments my ($adapters); my $hotspares = 0; my $hotsparecount = 0; my $pdbad = 0; my $pdcount = 0; my $mediaerrors = 0; my $mediaallow = 0; my $prederrors = 0; my $predallow = 0; my $othererrors = 0; my $otherallow = 0; my $result = ''; my $status = 'OK'; sub max_state ($$) { my ($current, $compare) = @_; if (($compare eq 'CRITICAL') || ($current eq 'CRITICAL')) { return 'CRITICAL'; } elsif ($compare eq 'OK') { return $current; } elsif ($compare eq 'WARNING') { return 'WARNING'; } elsif (($compare eq 'UNKNOWN') && ($current eq 'OK')) { return 'UNKNOWN'; } else { return $current; } } sub exitreport ($$) { my ($status, $message) = @_; print STDOUT "$status: $message\n"; exit $ERRORS{$status}; } if ( $opt_s ) { $hotspares = $opt_s; } if ( $opt_m ) { $mediaallow = $opt_m; } if ( $opt_p ) { $predallow = $opt_p; } if ( $opt_o ) { $otherallow = $opt_o; } # Some sanity checks that you actually have something where you think MegaCli is (-e $megaclibin) || exitreport('UNKNOWN',"error: $megaclibin does not exist"); # Get the number of RAID controllers we have open (ADPCOUNT, "$megacli -adpCount $megapostopt |") || exitreport('UNKNOWN',"error: Could not execute $megacli -adpCount $megapostopt"); while (<ADPCOUNT>) { if ( m/Controller Count:\s*(\d+)/ ) { $adapters = $1; last; } } close ADPCOUNT; ADAPTER: for ( my $adp = 0; $adp < $adapters; $adp++ ) { # Get the number of logical drives on this adapter open (LDGETNUM, "$megacli -LdGetNum -a$adp $megapostopt |") || exitreport('UNKNOWN', "error: Could not execute $megacli -LdGetNum -a$adp $megapostopt"); my ($ldnum); while (<LDGETNUM>) { if ( m/Number of Virtual drives configured on adapter \d:\s*(\d+)/i ) { $ldnum = $1; last; } } close LDGETNUM; LDISK: for ( my $ld = 0; $ld < $ldnum; $ld++ ) { # Get info on this particular logical drive open (LDINFO, "$megacli -LdInfo -L$ld -a$adp $megapostopt |") || exitreport('UNKNOWN', "error: Could not execute $megacli -LdInfo -L$ld -a$adp $megapostopt "); my ($size, $unit, $raidlevel, $ldpdcount, $state, $spandepth); while (<LDINFO>) { if ( m/Size\s*:\s*((\d+\.?\d*)\s*(MB|GB|TB))/ ) { $size = $2; $unit = $3; # Adjust MB to GB if that's what we got if ( $unit eq 'MB' ) { $size = sprintf( "%.0f", ($size / 1024) ); $unit= 'GB'; } } elsif ( m/State\s*:\s*(\w+)/ ) { $state = $1; if ( $state ne 'Optimal' ) { $status = 'CRITICAL'; } } elsif ( m/Number Of Drives\s*(per span\s*)?:\s*(\d+)/ ) { $ldpdcount = $2; } elsif ( m/Span Depth\s*:\s*(\d+)/ ) { $spandepth = $1; } elsif ( m/RAID Level\s*: Primary-(\d)/ ) { $raidlevel = $1; } } close LDINFO; # Report correct RAID-level and number of drives in case of Span configurations if ($ldpdcount && $spandepth > 1) { $ldpdcount = $ldpdcount * $spandepth; if ($raidlevel < 10) { $raidlevel = $raidlevel . "0"; } } $result .= "$adp:$ld:RAID-$raidlevel:$ldpdcount drives:$size$unit:$state "; } #LDISK close LDINFO; # Get info on physical disks for this adapter open (PDLIST, "$megacli -PdList -a$adp $megapostopt |") || exitreport('UNKNOWN', "error: Could not execute $megacli -PdList -a$adp $megapostopt "); my ($slotnumber,$fwstate); PDISKS: while (<PDLIST>) { if ( m/Slot Number\s*:\s*(\d+)/ ) { $slotnumber = $1; $pdcount++; } elsif ( m/(\w+) Error Count\s*:\s*(\d+)/ ) { if ( $1 eq 'Media') { $mediaerrors += $2; } else { $othererrors += $2; } } elsif ( m/Predictive Failure Count\s*:\s*(\d+)/ ) { $prederrors += $1; } elsif ( m/Firmware state\s*:\s*(\w+)/ ) { $fwstate = $1; if ( $fwstate eq 'Hotspare' ) { $hotsparecount++; } elsif ( $fwstate eq 'Online' ) { # Do nothing } elsif ( $fwstate eq 'Unconfigured' ) { # A drive not in anything, or a non drive device $pdcount--; } elsif ( $slotnumber != 255 ) { $pdbad++; $status = 'CRITICAL'; } } } #PDISKS close PDLIST; } $result .= "Drives:$pdcount "; # Any bad disks? if ( $pdbad ) { $result .= "$pdbad Bad Drives "; } my $errorcount = $mediaerrors + $prederrors + $othererrors; # Were there any errors? if ( $errorcount ) { $result .= "($errorcount Errors) "; if ( ( $mediaerrors > $mediaallow ) || ( $prederrors > $predallow ) || ( $othererrors > $otherallow ) ) { $status = max_state($status, 'WARNING'); } } # Do we have as many hotspares as expected (if any) if ( $hotspares ) { if ( $hotsparecount < $hotspares ) { $status = max_state($status, 'WARNING'); $result .= "Hotspare(s):$hotsparecount (of $hotspares)"; } else { $result .= "Hotspare(s):$hotsparecount"; } } exitreport($status, $result);