diff --git a/sysdump.sh b/sysdump.sh index f0f625f..1e143f5 100755 --- a/sysdump.sh +++ b/sysdump.sh @@ -20,6 +20,10 @@ safecmdroot() { [ $(id -u) -eq 0 ] && safecmd $@ } +safegetentry() { + [[ ${DUMP_ENTRIES} =~ $1 ]] && cat "${DUMP_FILE}"|jq -r ".[\"${1}\"]"|base64 -d +} + dump() { [ -z "$2" ] && return entry=$1 @@ -191,35 +195,38 @@ fi if [ "$ACTION" == "summarize" ] then ensure jq - file=$1 - OS_RELEASE=$(cat "$file"|jq -r '.["/etc/os-release"]'|base64 -d) - CPU_INFO=$(cat "$file"|jq -r '.["/proc/cpuinfo"]'|base64 -d) - MEM_INFO=$(cat "$file"|jq -r '.["/proc/meminfo"]'|base64 -d) - PING_SUCCESS_COUNT=$(cat "$file"|jq -r '.["ping"]'|base64 -d|grep "packet loss"|cut -d, -f 2|awk '{print $1+0}') - IPADDR=$(cat "$file"|jq -r '.["ipaddr"]'|base64 -d) - INFO_DISKS=$(cat "$file"|jq -r '.["df"]'|base64 -d) - KERNEL_CONFIG=$(cat "$file"|jq -r '.["kernel_config"]'|base64 -d) + # Setup safegetentry + DUMP_FILE=$1 + DUMP_ENTRIES=$(cat "${DUMP_FILE}"|jq -r "keys[]";) + + OS_RELEASE=$(safegetentry /etc/os-release) + CPU_INFO=$(safegetentry /proc/cpuinfo) + MEM_INFO=$(safegetentry /proc/meminfo) + PING_SUCCESS_COUNT=$(safegetentry ping|grep "packet loss"|cut -d, -f 2|awk '{print $1+0}') + IPADDR=$(safegetentry ipaddr) + INFO_DISKS=$(safegetentry df) + KERNEL_CONFIG=$(safegetentry kernel_config) # Extract infos INFO_OS_NAME=$(echo "$OS_RELEASE"|grep "^NAME=" | cut -d'"' -f 2) INFO_OS_VERSION=$(echo "$OS_RELEASE"|grep "^VERSION=" | cut -d'"' -f 2) - INFO_HOSTNAME=$(cat "$file"|jq -r '.["hostname"]'|base64 -d) + INFO_HOSTNAME=$(safegetentry hostname) INFO_CPU_MODEL=$(echo "$CPU_INFO"|grep "model name" | cut -d':' -f 2|uniq|awk '{$1=$1};1') INFO_CPU_CORE_N_PHY=$(echo "$CPU_INFO"|grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}') INFO_CPU_CORE_N_VIRT=$(echo "$CPU_INFO"|grep -c ^processor /proc/cpuinfo) [ "$INFO_CPU_CORE_N_PHY" -eq "$INFO_CPU_CORE_N_VIRT" ] && INFO_CPU_HYPERTHREADING="off" || INFO_CPU_HYPERTHREADING="on" - [ $PING_SUCCESS_COUNT -gt 0 ] && INFO_OTHER_NETWORK="on" || INFO_OTHER_NETWORK="off" + [ $PING_SUCCESS_COUNT -gt 0 ] && INFO_OTHER_NETWORK="available" || INFO_OTHER_NETWORK="unreachable" INFO_INET4=$(echo "$IPADDR"|awk '/inet /{printf $2", "}'| sed 's/..$//') INFO_INET6=$(echo "$IPADDR"|awk '/inet6 /{printf $2", "}'| sed 's/..$//') INFO_MEM_TOTAL=$(echo "$MEM_INFO"|awk '/MemTotal/{print $2/1000" MB"}') INFO_MEM_FREE=$(echo "$MEM_INFO"|awk '/MemFree/{print $2/1000" MB"}') INFO_MEM_SWAP_TOTAL=$(echo "$MEM_INFO"|awk '/SwapTotal/{print $2/1000" MB"}') INFO_MEM_SWAP_FREE=$(echo "$MEM_INFO"|awk '/SwapFree/{print $2/1000" MB"}') - INFO_UPTIME=$(cat "$file"|jq -r '.["uptime"]'|base64 -d|cut -d, -f 1|awk '{$1=$1};1') - INFO_DUMP_DATE=$(cat "$file"|jq -r '.["date"]'|base64 -d) && INFO_DUMP_DATE=$(date -d "@${INFO_DUMP_DATE}") - INFO_DUMP_USER=$(cat "$file"|jq -r '.["env"]'|base64 -d|grep "^USER="|cut -d= -f2) - INFO_TIMEZONE=$(cat "$file"|jq -r '.["/etc/timezone"]'|base64 -d) - INFO_KERNEL=$(cat "$file"|jq -r '.["/proc/version"]'|base64 -d|awk '/ version /{print $1" v"$3}') + INFO_UPTIME=$(safegetentry uptime|cut -d, -f 1|awk '{$1=$1};1') + INFO_DUMP_DATE=$(safegetentry date) && INFO_DUMP_DATE=$(date -d "@${INFO_DUMP_DATE}") + INFO_DUMP_USER=$(safegetentry env|grep "^USER="|cut -d= -f2) + INFO_TIMEZONE=$(safegetentry /etc/timezone) + INFO_KERNEL=$(safegetentry /proc/version|awk '/ version /{print $1" v"$3}') INFO_KERNEL_RAPL=$(echo "$KERNEL_CONFIG"|awk 'BEGIN{DETECTED=0};/^CONFIG_INTEL_RAPL=(y|m)/{DETECTED=1};END{if(DETECTED){print("Supported")}else{print("NA")}}') INFO_KERNEL_KVM=$(echo "$KERNEL_CONFIG"|awk 'BEGIN{DETECTED=0};/^CONFIG_KVM=(y|m)/{DETECTED=1};END{if(DETECTED){print("Supported")}else{print("NA")}}') INFO_KERNEL_I2C=$(echo "$KERNEL_CONFIG"|awk 'BEGIN{DETECTED=0};/^CONFIG_I2C=(y|m)/{DETECTED=1};END{if(DETECTED){print("Supported")}else{print("NA")}}') @@ -258,7 +265,7 @@ then echo "Dump User: ${INFO_DUMP_USER}" echo "Dump Date: ${INFO_DUMP_DATE}" echo "Timezone: ${INFO_TIMEZONE}" - echo "Network State: ${INFO_OTHER_NETWORK}" + echo "Internet: ${INFO_OTHER_NETWORK}" echo "IPv4: ${INFO_INET4}" echo "IPv6: ${INFO_INET6}" fi