Blob Blame History Raw
#!/bin/bash

# This script displays information about iprutils, IPR adapters and systemd services
# related to IPR. It will also create an sos report with iprutils information at $file
# when iprsos is invoked with "-o /path/to/file".

function _ipr_dump() {
	echo "=== Running 'iprconfig -c dump' ==="
	iprconfig -c dump
}

function _lspci() {
echo
	echo "=== Running 'lspci' ==="
	lspci
}

function _lsscsi() {
	echo
	echo "=== Running 'lsscsi' ==="
	lsscsi
}

function _lsscsi_H() {
	echo
	echo "=== Running 'lsscsi -H' ==="
	lsscsi -H
}

function _check_daemons() {
	if which systemctl >/dev/null 2>&1; then
		echo
		echo === IPR daemons: Running 'systemctl status ipr{init,dump,update}.service' ===
		systemctl status iprdump.service
		systemctl status iprinit.service
		systemctl status iprupdate.service
	else
		echo
		echo === IPR daemons: Running 'service ipr* status' ===
		service iprinit status
		service iprdump status
		service iprupdate status
	fi
}

function _etc_ipr() {
	echo
	echo "=== Contents of '/etc/ipr/ ' ==="
	if [ -d /etc/ipr ]; then
		ls /etc/ipr/
	else
		echo "No files at /etc/ipr/"
	fi
}

function _var_log_iprdump () {
	echo
	echo "=== Contents of '/var/log/iprdump*' ==="
	if [ -f /var/log/iprdump.? ]; then
		ls -lh /var/log/iprdump*
	else
		echo "No iprdump files found at /var/log."
	fi
}

function _var_log_messages() {
	echo
	echo "=== Contents of '/var/log/messages' ==="
	cat /var/log/messages

	if [ -f /var/log/dmesg ]; then
		echo "=== Contents of '/var/log/dmesg' ==="
		cat /var/log/dmesg
	fi

	if [ -f /var/log/boot.msg ]; then
		echo "=== Contents of '/var/log/boot.msg' ==="
		cat /var/log/boot.msg
	fi

	if [ -f /var/log/kern.log ]; then
		echo "=== Contents of '/var/log/kern.log' ==="
		cat /var/log/kern.log
	fi

	if [ -f /var/log/syslog ]; then
		echo "=== Contents of '/var/log/syslog' ==="
		cat /var/log/syslog
	fi
}

function _run_sos() {
	_ipr_dump
	_lspci
	_lsscsi
	_lsscsi_H
	_check_daemons
	_etc_ipr
	_var_log_iprdump
	_var_log_messages
}

args=($@)

if [ -z ${args[0]} ]; then
	file=

elif [ ${args[0]} = "-o" ]; then
	file=${args[1]}
	if [ -z $file ]; then
		echo "Usage: ./iprsos -o path/to/file"
		exit 1
	fi
fi

if [ -z $file ]; then
	_run_sos
else
	_run_sos > $file
fi