First version of FFDC script
This script provides users a command-line tool to collect and
tar up debug data.
Change-Id: I28b5431056625e6ff3d194f1ab668a0246b414b4
Signed-off-by: Michael Tritz <mtritz@us.ibm.com>
diff --git a/ffdc b/ffdc
new file mode 100644
index 0000000..0b7cd67
--- /dev/null
+++ b/ffdc
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+help=$'FFDC File Collection Script
+
+Collects various FFDC files and system parameters and places them in a .tar
+
+usage: ffdc [OPTION]
+
+Options:
+ -d, --dir <directory> Specify destination directory. Defaults to /tmp if
+ invalid or unspecified.
+ -h, --help Display this help text and exit.
+'
+
+declare -a arr=(
+# Commands to be outputted into individual files
+# Format: "File name" "Command"
+ "Build_info.txt" "cat /etc/version"
+ "FW_level.txt" "cat /etc/os-release"
+ "BMC_OS.txt" "uname -a"
+ "BMC_uptime.txt" "uptime"
+ "BMC_disk_usage.txt" "df -hT"
+
+ "systemctl_status.txt" "systemctl status | cat"
+ "failed_services.txt" "systemctl --failed"
+ "host_console.txt" "cat /var/log/obmc-console.log"
+
+ "BMC_proc_list.txt" "top -n 1 -b"
+ "BMC_journalctl.txt" "journalctl --no-pager"
+ "BMC_dmesg.txt" "dmesg"
+ "BMC_procinfo.txt" "cat /proc/cpuinfo"
+ "BMC_meminfo.txt" "cat /proc/meminfo"
+
+# Copy all content from these directories into directories in the .tar
+# Format: "Directory name" "Directory to copy"
+ "obmc" "/var/lib/obmc/"
+)
+
+dir=$"ffdc_$(date +"%Y-%m-%d_%H-%M-%S")"
+dest="/tmp"
+
+while [[ $# -gt 0 ]]; do
+ key="$1"
+ case $key in
+ -d|--dir)
+ if [ -d "$2" ]; then
+ dest="$2"
+ else
+ echo "Invalid or no destination directory specified."
+ break
+ fi
+ shift 2
+ ;;
+ -h|--help)
+ echo "$help"
+ exit
+ ;;
+ *)
+ echo "Unknown option $1. Display available options with -h or --help"
+ exit
+ ;;
+ esac
+done
+
+echo "Using destination directory $dest"
+
+mkdir "$dest/$dir"
+
+for ((i=0;i<${#arr[@]};i+=2)); do
+ if [ -d "${arr[i+1]}" ]; then
+ echo "Copying contents of ${arr[i+1]} to directory ./${arr[i]} ..."
+ mkdir "$dest/$dir/${arr[i]}"
+ cp -r ${arr[i+1]}/* $dest/$dir/${arr[i]}
+ else
+ echo "Collecting ${arr[i]}..."
+ ${arr[i+1]} >> "$dest/$dir/${arr[i]}"
+ fi
+done
+
+tar -cf "$dir.tar" -C $dest $dir
+echo "Contents in $dest/$dir.tar"
+
+rm -r "$dest/$dir"