xref: /openbmc/phosphor-debug-collector/ffdc (revision 3e3f28b4)
1*3e3f28b4SMichael Tritz#!/bin/sh
2*3e3f28b4SMichael Tritz
3*3e3f28b4SMichael Tritzhelp=$'FFDC File Collection Script
4*3e3f28b4SMichael Tritz
5*3e3f28b4SMichael TritzCollects various FFDC files and system parameters and places them in a .tar
6*3e3f28b4SMichael Tritz
7*3e3f28b4SMichael Tritzusage: ffdc [OPTION]
8*3e3f28b4SMichael Tritz
9*3e3f28b4SMichael TritzOptions:
10*3e3f28b4SMichael Tritz   -d, --dir <directory>  Specify destination directory. Defaults to /tmp if
11*3e3f28b4SMichael Tritz                          invalid or unspecified.
12*3e3f28b4SMichael Tritz   -h, --help             Display this help text and exit.
13*3e3f28b4SMichael Tritz'
14*3e3f28b4SMichael Tritz
15*3e3f28b4SMichael Tritzdeclare -a arr=(
16*3e3f28b4SMichael Tritz# Commands to be outputted into individual files
17*3e3f28b4SMichael Tritz# Format: "File name" "Command"
18*3e3f28b4SMichael Tritz      "Build_info.txt"            "cat /etc/version"
19*3e3f28b4SMichael Tritz      "FW_level.txt"              "cat /etc/os-release"
20*3e3f28b4SMichael Tritz      "BMC_OS.txt"                "uname -a"
21*3e3f28b4SMichael Tritz      "BMC_uptime.txt"            "uptime"
22*3e3f28b4SMichael Tritz      "BMC_disk_usage.txt"        "df -hT"
23*3e3f28b4SMichael Tritz
24*3e3f28b4SMichael Tritz      "systemctl_status.txt"      "systemctl status | cat"
25*3e3f28b4SMichael Tritz      "failed_services.txt"       "systemctl --failed"
26*3e3f28b4SMichael Tritz      "host_console.txt"          "cat /var/log/obmc-console.log"
27*3e3f28b4SMichael Tritz
28*3e3f28b4SMichael Tritz      "BMC_proc_list.txt"         "top -n 1 -b"
29*3e3f28b4SMichael Tritz      "BMC_journalctl.txt"        "journalctl --no-pager"
30*3e3f28b4SMichael Tritz      "BMC_dmesg.txt"             "dmesg"
31*3e3f28b4SMichael Tritz      "BMC_procinfo.txt"          "cat /proc/cpuinfo"
32*3e3f28b4SMichael Tritz      "BMC_meminfo.txt"           "cat /proc/meminfo"
33*3e3f28b4SMichael Tritz
34*3e3f28b4SMichael Tritz# Copy all content from these directories into directories in the .tar
35*3e3f28b4SMichael Tritz# Format: "Directory name" "Directory to copy"
36*3e3f28b4SMichael Tritz      "obmc"                      "/var/lib/obmc/"
37*3e3f28b4SMichael Tritz)
38*3e3f28b4SMichael Tritz
39*3e3f28b4SMichael Tritzdir=$"ffdc_$(date +"%Y-%m-%d_%H-%M-%S")"
40*3e3f28b4SMichael Tritzdest="/tmp"
41*3e3f28b4SMichael Tritz
42*3e3f28b4SMichael Tritzwhile [[ $# -gt 0 ]]; do
43*3e3f28b4SMichael Tritz  key="$1"
44*3e3f28b4SMichael Tritz  case $key in
45*3e3f28b4SMichael Tritz    -d|--dir)
46*3e3f28b4SMichael Tritz      if [ -d "$2" ]; then
47*3e3f28b4SMichael Tritz        dest="$2"
48*3e3f28b4SMichael Tritz      else
49*3e3f28b4SMichael Tritz        echo "Invalid or no destination directory specified."
50*3e3f28b4SMichael Tritz        break
51*3e3f28b4SMichael Tritz      fi
52*3e3f28b4SMichael Tritz      shift 2
53*3e3f28b4SMichael Tritz      ;;
54*3e3f28b4SMichael Tritz    -h|--help)
55*3e3f28b4SMichael Tritz      echo "$help"
56*3e3f28b4SMichael Tritz      exit
57*3e3f28b4SMichael Tritz      ;;
58*3e3f28b4SMichael Tritz    *)
59*3e3f28b4SMichael Tritz      echo "Unknown option $1. Display available options with -h or --help"
60*3e3f28b4SMichael Tritz      exit
61*3e3f28b4SMichael Tritz      ;;
62*3e3f28b4SMichael Tritz  esac
63*3e3f28b4SMichael Tritzdone
64*3e3f28b4SMichael Tritz
65*3e3f28b4SMichael Tritzecho "Using destination directory $dest"
66*3e3f28b4SMichael Tritz
67*3e3f28b4SMichael Tritzmkdir "$dest/$dir"
68*3e3f28b4SMichael Tritz
69*3e3f28b4SMichael Tritzfor ((i=0;i<${#arr[@]};i+=2)); do
70*3e3f28b4SMichael Tritz  if [ -d "${arr[i+1]}" ]; then
71*3e3f28b4SMichael Tritz    echo "Copying contents of ${arr[i+1]} to directory ./${arr[i]} ..."
72*3e3f28b4SMichael Tritz    mkdir "$dest/$dir/${arr[i]}"
73*3e3f28b4SMichael Tritz    cp -r ${arr[i+1]}/* $dest/$dir/${arr[i]}
74*3e3f28b4SMichael Tritz  else
75*3e3f28b4SMichael Tritz    echo "Collecting ${arr[i]}..."
76*3e3f28b4SMichael Tritz    ${arr[i+1]} >> "$dest/$dir/${arr[i]}"
77*3e3f28b4SMichael Tritz  fi
78*3e3f28b4SMichael Tritzdone
79*3e3f28b4SMichael Tritz
80*3e3f28b4SMichael Tritztar -cf "$dir.tar" -C $dest $dir
81*3e3f28b4SMichael Tritzecho "Contents in $dest/$dir.tar"
82*3e3f28b4SMichael Tritz
83*3e3f28b4SMichael Tritzrm -r "$dest/$dir"
84