Files
percona-toolkit/lib/bash/collect_system_info.sh
Brian Fraser fraserb@gmail.com 865b3e4e9d collect_system_info shouldn't assume that sysctl is available.
It isn't on CentOS 5.5. It didn't really assume that it
was always there, but rather than the produced samples file
would be.
2012-06-04 11:57:44 -03:00

577 lines
22 KiB
Bash

# This program is copyright 2011-2012 Percona Inc.
# Feedback and improvements are welcome.
#
# THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# 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, version 2; OR the Perl Artistic License. On UNIX and similar
# systems, you can issue `man perlgpl' or `man perlartistic' to read these
# licenses.
#
# 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., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA.
# ###########################################################################
# collect_system_info package
# ###########################################################################
# Package: collect_system_info
# collects system information.
# XXX
# THIS LIB REQUIRES log_warn_die.sh, summary_common.sh, and alt_cmds.sh!
# XXX
set -u
# This is inside a function so it can take into account our PATH mungling.
setup_commands () {
# While extremely unwieldly, this allows us to fake the commands when testing.
CMD_SYSCTL="$(_which sysctl 2>/dev/null )"
CMD_DMIDECODE="$(_which dmidecode 2>/dev/null )"
CMD_ZONENAME="$(_which zonename 2>/dev/null )"
CMD_DMESG="$(_which dmesg 2>/dev/null )"
CMD_FILE="$(_which file 2>/dev/null )"
CMD_LSPCI="$(_which lspci 2>/dev/null )"
CMD_PRTDIAG="$(_which prtdiag 2>/dev/null )"
CMD_SMBIOS="$(_which smbios 2>/dev/null )"
CMD_GETENFORCE="$(_which getenforce 2>/dev/null )"
CMD_PRTCONF="$(_which prtconf 2>/dev/null )"
CMD_LVS="$(_which lvs 2>/dev/null)"
CMD_VGS="$(_which vgs 2>/dev/null)"
CMD_PRSTAT="$(_which prstat 2>/dev/null)"
CMD_ISAINFO="$(_which isainfo 2>/dev/null)"
CMD_TOP="$(_which top 2>/dev/null)"
CMD_ARCCONF="$( _which arcconf 2>/dev/null )"
CMD_HPACUCLI="$( _which hpacucli 2>/dev/null )"
CMD_MEGACLI64="$( _which MegaCli64 2>/dev/null )"
CMD_VMSTAT="$(_which vmstat 2>/dev/null)"
CMD_IP="$( _which ip 2>/dev/null )"
CMD_NETSTAT="$( _which netstat 2>/dev/null )"
CMD_PSRINFO="$( _which psrinfo 2>/dev/null )"
CMD_SWAPCTL="$( _which swapctl 2>/dev/null )"
CMD_LSB_RELEASE="$( _which lsb_release 2>/dev/null )"
CMD_ETHTOOL="$( _which ethtool 2>/dev/null )"
CMD_GETCONF="$( _which getconf 2>/dev/null )"
}
collect_system_data () { local PTFUNCNAME=collect_system_data;
local data_dir="$1"
if [ -r /var/log/dmesg -a -s /var/log/dmesg ]; then
cat "/var/log/dmesg" > "$data_dir/dmesg_file"
fi
# ########################################################################
# Grab a bunch of stuff and put it into temp files for later.
# ########################################################################
$CMD_SYSCTL -a > "$data_dir/sysctl" 2>/dev/null
if [ "${CMD_LSPCI}" ]; then
$CMD_LSPCI > "$data_dir/lspci_file" 2>/dev/null
fi
local platform="$(uname -s)"
echo "platform $platform" >> "$data_dir/summary"
echo "hostname $(uname -n)" >> "$data_dir/summary"
uptime >> "$data_dir/uptime"
processor_info "$data_dir"
find_release_and_kernel "$platform" >> "$data_dir/summary"
cpu_and_os_arch "$platform" >> "$data_dir/summary"
find_virtualization "$platform" "$data_dir/dmesg_file" "$data_dir/lspci_file" >> "$data_dir/summary"
dmidecode_system_info >> "$data_dir/summary"
if [ "${platform}" = "SunOS" -a "${CMD_ZONENAME}" ]; then
echo "zonename $($CMD_ZONENAME)" >> "$data_dir/summary"
fi
# Threading library
if [ -x /lib/libc.so.6 ]; then
echo "compiler $(/lib/libc.so.6 | grep 'Compiled by' | cut -c13-)" >> "$data_dir/summary"
fi
local rss=$(ps -eo rss 2>/dev/null | awk '/[0-9]/{total += $1 * 1024} END {print total}')
echo "rss ${rss}" >> "$data_dir/summary"
[ "$CMD_DMIDECODE" ] && $CMD_DMIDECODE > "$data_dir/dmidecode" 2>/dev/null
find_memory_stats "$platform" > "$data_dir/memory"
[ "$OPT_SUMMARIZE_MOUNTS" ] && mounted_fs_info "$platform" > "$data_dir/mounted_fs"
raid_controller "$data_dir/dmesg_file" "$data_dir/lspci_file" >> "$data_dir/summary"
local controller="$(get_var raid_controller "$data_dir/summary")"
propietary_raid_controller "$data_dir/raid-controller" "$data_dir/summary" "$data_dir" "$controller"
[ "${platform}" = "Linux" ] && linux_exclusive_collection "$data_dir"
if [ "$CMD_IP" -a "$OPT_SUMMARIZE_NETWORK" ]; then
$CMD_IP -s link > "$data_dir/ip"
network_device_info "$data_dir/ip" > "$data_dir/network_devices"
fi
[ "$CMD_SWAPCTL" ] && $CMD_SWAPCTL -s > "$data_dir/swapctl"
if [ "$OPT_SUMMARIZE_PROCESSES" ]; then
top_processes > "$data_dir/processes"
notable_processes_info > "$data_dir/notable_procs"
if [ "$CMD_VMSTAT" ]; then
# Here we make an exception from our usual rule of not leaving
# empty files, since the reporting code uses its existence
# as an indicator to do the vmstat portion of the code,
# and it's entirely possible to have reached that spot without
# having the forked process output anything.
touch "$data_dir/vmstat"
(
$CMD_VMSTAT 1 $OPT_SLEEP > "$data_dir/vmstat"
) &
fi
fi
# Clean the data directory, don't leave empty files
for file in $data_dir/*; do
# The vmstat file gets special treatmeant, see above.
[ "$file" = "vmstat" ] && continue
[ ! -s "$file" ] && rm "$file"
done
}
linux_exclusive_collection () { local PTFUNCNAME=linux_exclusive_collection;
local data_dir="$1"
echo "threading $(getconf GNU_LIBPTHREAD_VERSION)" >> "$data_dir/summary"
local getenforce=""
[ "$CMD_GETENFORCE" ] && getenforce="$($CMD_GETENFORCE 2>&1)"
echo "getenforce ${getenforce:-"No SELinux detected"}" >> "$data_dir/summary"
if [ -e "$data_dir/sysctl" ]; then
echo "swappiness $(awk '/vm.swappiness/{print $3}' "$data_dir/sysctl")" >> "$data_dir/summary"
local dirty_ratio="$(awk '/vm.dirty_ratio/{print $3}' "$data_dir/sysctl")"
local dirty_bg_ratio="$(awk '/vm.dirty_background_ratio/{print $3}' "$data_dir/sysctl")"
if [ "$dirty_ratio" -a "$dirty_bg_ratio" ]; then
echo "dirtypolicy $dirty_ratio, $dirty_bg_ratio" >> "$data_dir/summary"
fi
local dirty_bytes="$(awk '/vm.dirty_bytes/{print $3}' "$data_dir/sysctl")"
if [ "$dirty_bytes" ]; then
echo "dirtystatus $(awk '/vm.dirty_bytes/{print $3}' "$data_dir/sysctl"), $(awk '/vm.dirty_background_bytes/{print $3}' "$data_dir/sysctl")" >> "$data_dir/summary"
fi
fi
schedulers_and_queue_size "$data_dir/summary" > "$data_dir/partitioning"
for file in dentry-state file-nr inode-nr; do
echo "${file} $(cat /proc/sys/fs/${file} 2>&1)" >> "$data_dir/summary"
done
[ "$CMD_LVS" -a -x "$CMD_LVS" ] && $CMD_LVS 1>"$data_dir/lvs" 2>"$data_dir/lvs.stderr"
[ "$CMD_VGS" -a -x "$CMD_VGS" ] && \
$CMD_VGS -o vg_name,vg_size,vg_free 2>/dev/null > "$data_dir/vgs"
[ "$CMD_NETSTAT" -a "$OPT_SUMMARIZE_NETWORK" ] && \
$CMD_NETSTAT -antp > "$data_dir/netstat" 2>/dev/null
}
network_device_info () {
local ip_minus_s_file="$1"
if [ "$CMD_ETHTOOL" ]; then
local tempfile="$TMPDIR/ethtool_output_temp"
# For each entry in the ip -s link dump, check if itu starts with a number.
# If it does, print the second field. Then remove the colon and everything
# following that. Then skip what are usually interfaces.
for device in $( awk '/^[1-9]/{ print $2 }' "$ip_minus_s_file" \
| awk -F: '{print $1}' \
| grep -v '^lo\|^in\|^gr' \
| sort -u ); do
# Call ethtool on what might be a device
ethtool $device > "$tempfile" 2>/dev/null
# If there isn't any information, we are most likely not dealing with
# a device at all, but an interface, so skip it, otherwise print
# ethtool's output.
if ! grep -q 'No data available' "$tempfile"; then
cat "$tempfile"
fi
done
fi
}
# Try to find all sorts of different files that say what the release is.
find_release_and_kernel () { local PTFUNCNAME=find_release_and_kernel;
local platform="$1"
local kernel=""
local release=""
if [ "${platform}" = "Linux" ]; then
kernel="$(uname -r)"
if [ -e /etc/fedora-release ]; then
release=$(cat /etc/fedora-release);
elif [ -e /etc/redhat-release ]; then
release=$(cat /etc/redhat-release);
elif [ -e /etc/system-release ]; then
release=$(cat /etc/system-release);
elif [ "$CMD_LSB_RELEASE" ]; then
release="$($CMD_LSB_RELEASE -ds) ($($CMD_LSB_RELEASE -cs))"
elif [ -e /etc/lsb-release ]; then
release=$(grep DISTRIB_DESCRIPTION /etc/lsb-release |awk -F'=' '{print $2}' |sed 's#"##g');
elif [ -e /etc/debian_version ]; then
release="Debian-based version $(cat /etc/debian_version)";
if [ -e /etc/apt/sources.list ]; then
local code=` awk '/^deb/ {print $3}' /etc/apt/sources.list \
| awk -F/ '{print $1}'| awk 'BEGIN {FS="|"}{print $1}' \
| sort | uniq -c | sort -rn | head -n1 | awk '{print $2}'`
release="${release} (${code})"
fi
elif ls /etc/*release >/dev/null 2>&1; then
if grep -q DISTRIB_DESCRIPTION /etc/*release; then
release=$(grep DISTRIB_DESCRIPTION /etc/*release | head -n1);
else
release=$(cat /etc/*release | head -n1);
fi
fi
elif [ "${platform}" = "FreeBSD" ] \
|| [ "${platform}" = "NetBSD" ] \
|| [ "${platform}" = "OpenBSD" ]; then
release="$(uname -r)"
kernel="$($CMD_SYSCTL -n "kern.osrevision")"
elif [ "${platform}" = "SunOS" ]; then
release="$(head -n1 /etc/release)"
if [ -z "${release}" ]; then
release="$(uname -r)"
fi
kernel="$(uname -v)"
fi
echo "kernel $kernel"
echo "release $release"
}
cpu_and_os_arch () { local PTFUNCNAME=cpu_and_os_arch;
local platform="$1"
local CPU_ARCH='32-bit'
local OS_ARCH='32-bit'
if [ "${platform}" = "Linux" ]; then
if grep -q ' lm ' /proc/cpuinfo; then
CPU_ARCH='64-bit'
fi
elif [ "${platform}" = "FreeBSD" ] || [ "${platform}" = "NetBSD" ]; then
if $CMD_SYSCTL "hw.machine_arch" | grep -v 'i[36]86' >/dev/null; then
CPU_ARCH='64-bit'
fi
elif [ "${platform}" = "OpenBSD" ]; then
if $CMD_SYSCTL "hw.machine" | grep -v 'i[36]86' >/dev/null; then
CPU_ARCH='64-bit'
fi
elif [ "${platform}" = "SunOS" ]; then
if $CMD_ISAINFO -b | grep 64 >/dev/null ; then
CPU_ARCH="64-bit"
fi
fi
if [ -z "$CMD_FILE" ]; then
if [ "$CMD_GETCONF" ] && $CMD_GETCONF LONG_BIT 1>/dev/null 2>&1; then
OS_ARCH="$($CMD_GETCONF LONG_BIT 2>/dev/null)-bit"
else
OS_ARCH='N/A'
fi
elif $CMD_FILE /bin/sh | grep '64-bit' >/dev/null; then
OS_ARCH='64-bit'
fi
echo "CPU_ARCH $CPU_ARCH"
echo "OS_ARCH $OS_ARCH"
}
# We look in dmesg for virtualization information first, because it's often
# available to non-root users and usually has telltale signs. It's most
# reliable to look at /var/log/dmesg if possible. There are a number of
# other ways to find out if a system is virtualized.
find_virtualization () { local PTFUNCNAME=find_virtualization;
local platform="$1"
local dmesg_file="$2"
local lspci_file="$3"
local tempfile="$TMPDIR/find_virtualziation.tmp"
local virt=""
if [ -s "$dmesg_file" ]; then
virt="$(find_virtualization_dmesg "$dmesg_file")"
fi
if [ -z "${virt}" ] && [ -s "$lspci_file" ]; then
if grep -qi "virtualbox" "$lspci_file" ; then
virt="VirtualBox"
elif grep -qi "vmware" "$lspci_file" ; then
virt="VMWare"
fi
elif [ "${platform}" = "FreeBSD" ]; then
if ps -o stat | grep J ; then
virt="FreeBSD Jail"
fi
elif [ "${platform}" = "SunOS" ]; then
if [ "$CMD_PRTDIAG" ] && $CMD_PRTDIAG > "$tempfile" 2>/dev/null; then
virt="$(find_virtualization_generic "$tempfile" )"
elif [ "$CMD_SMBIOS" ] && $CMD_SMBIOS > "$tempfile" 2>/dev/null; then
virt="$(find_virtualization_generic "$tempfile" )"
fi
elif [ -e /proc/user_beancounters ]; then
virt="OpenVZ/Virtuozzo"
fi
echo "virt ${virt:-"No virtualization detected"}"
}
# ##############################################################################
# Try to figure out if a system is a guest by looking at prtdiag, smbios, etc.
# ##############################################################################
find_virtualization_generic() { local PTFUNCNAME=find_virtualization_generic;
local file="$1"
if grep -i -e "virtualbox" "$file" >/dev/null; then
echo "VirtualBox"
elif grep -i -e "vmware" "$file" >/dev/null; then
echo "VMWare"
fi
}
# ##############################################################################
# Parse the output of dmesg and detect virtualization.
# ##############################################################################
find_virtualization_dmesg () { local PTFUNCNAME=find_virtualization_dmesg;
local file="$1"
if grep -qi -e "vmware" -e "vmxnet" -e 'paravirtualized kernel on vmi' "${file}"; then
echo "VMWare";
elif grep -qi -e 'paravirtualized kernel on xen' -e 'Xen virtual console' "${file}"; then
echo "Xen";
elif grep -qi "qemu" "${file}"; then
echo "QEmu";
elif grep -qi 'paravirtualized kernel on KVM' "${file}"; then
echo "KVM";
elif grep -q "VBOX" "${file}"; then
echo "VirtualBox";
elif grep -qi 'hd.: Virtual .., ATA.*drive' "${file}"; then
echo "Microsoft VirtualPC";
fi
}
# TODO: Maybe worth it to just dump dmidecode once and parse that?
dmidecode_system_info () { local PTFUNCNAME=dmidecode_system_info;
if [ "${CMD_DMIDECODE}" ]; then
local vendor="$($CMD_DMIDECODE -s "system-manufacturer" 2>/dev/null | sed 's/ *$//g')"
echo "vendor ${vendor}"
if [ "${vendor}" ]; then
local product="$($CMD_DMIDECODE -s "system-product-name" 2>/dev/null | sed 's/ *$//g')"
local version="$($CMD_DMIDECODE -s "system-version" 2>/dev/null | sed 's/ *$//g')"
local chassis="$($CMD_DMIDECODE -s "chassis-type" 2>/dev/null | sed 's/ *$//g')"
local servicetag="$($CMD_DMIDECODE -s "system-serial-number" 2>/dev/null | sed 's/ *$//g')"
local system="${vendor}; ${product}; v${version} (${chassis})"
echo "system ${system}"
echo "servicetag ${servicetag:-"Not found"}"
fi
fi
}
find_memory_stats () { local PTFUNCNAME=find_memory_stats;
local platform="$1"
if [ "${platform}" = "Linux" ]; then
free -b
cat /proc/meminfo
elif [ "${platform}" = "SunOS" ]; then
$CMD_PRTCONF | awk -F: '/Memory/{print $2}'
fi
}
mounted_fs_info () { local PTFUNCNAME=mounted_fs_info;
local platform="$1"
if [ "${platform}" != "SunOS" ]; then
local cmd="df -h"
if [ "${platform}" = "Linux" ]; then
cmd="df -h -P"
fi
$cmd | sort > "$TMPDIR/mounted_fs_info.tmp"
mount | sort | join "$TMPDIR/mounted_fs_info.tmp" -
fi
}
# ########################################################################
# We look in lspci first because it's more reliable, then dmesg, because it's
# often available to non-root users. It's most reliable to look at
# /var/log/dmesg if possible.
# ########################################################################
raid_controller () { local PTFUNCNAME=raid_controller;
local dmesg_file="$1"
local lspci_file="$2"
local tempfile="$TMPDIR/raid_controller.tmp"
local controller=""
if [ -s "$lspci_file" ]; then
controller="$(find_raid_controller_lspci "$lspci_file")"
fi
if [ -z "${controller}" ] && [ -s "$dmesg_file" ]; then
controller="$(find_raid_controller_dmesg "$dmesg_file")"
fi
echo "raid_controller ${controller:-"No RAID controller detected"}"
}
# ##############################################################################
# Parse the output of dmesg and detect RAID controllers.
# ##############################################################################
find_raid_controller_dmesg () { local PTFUNCNAME=find_raid_controller_dmesg;
local file="$1"
local pat='scsi[0-9].*: .*'
if grep -qi "${pat}megaraid" "${file}"; then
echo 'LSI Logic MegaRAID SAS'
elif grep -q "Fusion MPT SAS" "${file}"; then
echo 'Fusion-MPT SAS'
elif grep -q "${pat}aacraid" "${file}"; then
echo 'AACRAID'
elif grep -q "${pat}3ware [0-9]* Storage Controller" "${file}"; then
echo '3Ware'
fi
}
# ##############################################################################
# Parse the output of lspci and detect RAID controllers.
# ##############################################################################
find_raid_controller_lspci () { local PTFUNCNAME=find_raid_controller_lspci;
local file="$1"
if grep -q "RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS" "${file}"; then
echo 'LSI Logic MegaRAID SAS'
elif grep -q "Fusion-MPT SAS" "${file}"; then
echo 'Fusion-MPT SAS'
elif grep -q "RAID bus controller: LSI Logic / Symbios Logic Unknown" "${file}"; then
echo 'LSI Logic Unknown'
elif grep -q "RAID bus controller: Adaptec AAC-RAID" "${file}"; then
echo 'AACRAID'
elif grep -q "3ware [0-9]* Storage Controller" "${file}"; then
echo '3Ware'
elif grep -q "Hewlett-Packard Company Smart Array" "${file}"; then
echo 'HP Smart Array'
elif grep -q " RAID bus controller: " "${file}"; then
awk -F: '/RAID bus controller\:/ {print $3" "$5" "$6}' "${file}"
fi
}
schedulers_and_queue_size () { local PTFUNCNAME=schedulers_and_queue_size;
local file="$1"
local disks="$(ls /sys/block/ | grep -v -e ram -e loop -e 'fd[0-9]' | xargs echo)"
echo "internal::disks $disks" >> "$file"
for disk in $disks; do
if [ -e "/sys/block/${disk}/queue/scheduler" ]; then
echo "internal::${disk} $(cat /sys/block/${disk}/queue/scheduler | grep -o '\[.*\]') $(cat /sys/block/${disk}/queue/nr_requests)" >> "$file"
fdisk -l "/dev/${disk}" 2>/dev/null
fi
done
}
top_processes () { local PTFUNCNAME=top_processes;
if [ "$CMD_PRSTAT" ]; then
$CMD_PRSTAT | head
elif [ "$CMD_TOP" ]; then
local cmd="$CMD_TOP -bn 1"
if [ "${platform}" = "FreeBSD" ] \
|| [ "${platform}" = "NetBSD" ] \
|| [ "${platform}" = "OpenBSD" ]; then
cmd="$CMD_TOP -b -d 1"
fi
$cmd \
| sed -e 's# *$##g' -e '/./{H;$!d;}' -e 'x;/PID/!d;' \
| grep . \
| head
fi
}
notable_processes_info () { local PTFUNCNAME=notable_processes_info;
local format="%5s %+2d %s\n"
local sshd_pid=$(ps -eo pid,args | awk '$2 ~ /\/usr\/sbin\/sshd/ { print $1; exit }')
echo " PID OOM COMMAND"
# First, let's find the oom value of sshd
if [ "$sshd_pid" ]; then
printf "$format" "$sshd_pid" "$(get_oom_of_pid $sshd_pid)" "sshd"
else
printf "%5s %3s %s\n" "?" "?" "sshd doesn't appear to be running"
fi
# Disabling PTDEBUG for the remainder of this function, otherwise we get several
# hundred lines of mostly useless debug output
local PTDEBUG=""
# Let's find out if any process has an oom of -17
ps -eo pid,ucomm | grep '^[0-9]' | while read pid proc; do
# Skip sshd, since we manually checked this before
[ "$sshd_pid" ] && [ "$sshd_pid" = "$pid" ] && continue
local oom="$(get_oom_of_pid $pid)"
if [ "$oom" ] && [ "$oom" != "?" ] && [ "$oom" = "-17" ]; then
printf "$format" "$pid" "$oom" "$proc"
fi
done
}
processor_info () { local PTFUNCNAME=processor_info;
local data_dir="$1"
if [ -f /proc/cpuinfo ]; then
cat /proc/cpuinfo > "$data_dir/proc_cpuinfo_copy" 2>/dev/null
elif [ "${platform}" = "SunOS" ]; then
$CMD_PSRINFO -v > "$data_dir/psrinfo_minus_v"
fi
}
# ########################################################################
# Attempt to get, parse, and print RAID controller status from possibly
# proprietary management software. Any executables that are normally stored
# in a weird location, such as /usr/StorMan/arcconf, should have their
# location added to $PATH at the beginning of main().
# ########################################################################
propietary_raid_controller () { local PTFUNCNAME=propietary_raid_controller;
local file="$1"
local variable_file="$2"
local data_dir="$3"
local controller="$4"
notfound=""
if [ "${controller}" = "AACRAID" ]; then
if [ -z "$CMD_ARCCONF" ]; then
notfound="e.g. http://www.adaptec.com/en-US/support/raid/scsi_raid/ASR-2120S/"
elif $CMD_ARCCONF getconfig 1 > "$file" 2>/dev/null; then
echo "internal::raid_opt 1" >> "$variable_file"
fi
elif [ "${controller}" = "HP Smart Array" ]; then
if [ -z "$CMD_HPACUCLI" ]; then
notfound="your package repository or the manufacturer's website"
elif $CMD_HPACUCLI ctrl all show config > "$file" 2>/dev/null; then
echo "internal::raid_opt 2" >> "$variable_file"
fi
elif [ "${controller}" = "LSI Logic MegaRAID SAS" ]; then
if [ -z "$CMD_MEGACLI64" ]; then
notfound="your package repository or the manufacturer's website"
else
echo "internal::raid_opt 3" >> "$variable_file"
$CMD_MEGACLI64 -AdpAllInfo -aALL -NoLog > "$data_dir/lsi_megaraid_adapter_info.tmp" 2>/dev/null
$CMD_MEGACLI64 -AdpBbuCmd -GetBbuStatus -aALL -NoLog > "$data_dir/lsi_megaraid_bbu_status.tmp" 2>/dev/null
$CMD_MEGACLI64 -LdPdInfo -aALL -NoLog > "$data_dir/lsi_megaraid_devices.tmp" 2>/dev/null
fi
fi
if [ "${notfound}" ]; then
echo "internal::raid_opt 0" >> "$variable_file"
echo " RAID controller software not found; try getting it from" > "$file"
echo " ${notfound}" >> "$file"
fi
}
# ###########################################################################
# End collect_system_info package
# ###########################################################################