#!/bin/sh
#set -ex
# This script should be run on customer system to collect required information about system for support purpose only.
# Must be run under root user.
if [ "$(id -u)" -ne 0 ]; then
echo "You must run this script as root." >&2
exit 1
fi
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
PROVIDER="eset"
RTP_MODULE="eset_rtp"
EWAP_MODULE="eset_wap"
ROOT_PROCESS_NAME="startd"
# Find security product
if [ -f "/opt/${PROVIDER}/eea/etc/pkgid" ]; then
PRODUCT="eea"
LSLOG_LOCATION="sbin"
CFG_LOCATION="lib"
CLOUD_LOCATION="lib"
elif [ -f "/opt/${PROVIDER}/efs/etc/pkgid" ]; then
PRODUCT="efs"
LSLOG_LOCATION="bin"
CFG_LOCATION="sbin"
CLOUD_LOCATION="sbin"
else
echo "Security product not found." >&2
exit 1
fi
# paths
PRODUCT_PATH="${PROVIDER}/${PRODUCT}"
INSTALL_PATH="/opt/${PRODUCT_PATH}"
VAR_PATH="/var/opt/${PRODUCT_PATH}"
INTERNAL_LOG_PATH="/var/log/${PRODUCT_PATH}/internal"
LOG_PATH="/var/log/${PRODUCT_PATH}/logd"
RUN_PATH="/var/run/${PRODUCT_PATH}"
ECP_LOGS_PATH="${VAR_PATH}/licensed/ecp"
UDEV_FILE_PATH="/etc/udev/rules.d/00-${PROVIDER}.${PRODUCT}.rules"
WAP_USER_DATA_FILE_PATH="${VAR_PATH}/wap/daemon/user_data.txt"
WAP_CERT_CTL_LOG_FILE_PATH="${VAR_PATH}/wap/daemon/cert_ctl.log"
WAP_VAR_DIR="${VAR_PATH}/wap"
MODULES_BACKUPS_DIR="${VAR_PATH}/updated/modules/backup"
RTP_STATS_PATH="/sys/module/${RTP_MODULE}/statistics"
LSLOG_PATH="${INSTALL_PATH}/${LSLOG_LOCATION}/lslog"
CFG_PATH="${INSTALL_PATH}/${CFG_LOCATION}/cfg"
LSDEV_PATH="${INSTALL_PATH}/bin/lsdev"
CLOUD_PATH="${INSTALL_PATH}/${CLOUD_LOCATION}/cloud"
LOCAL_STORAGE_PATH="${VAR_PATH}/storage"
# temp directory
TMP_DIR="$(mktemp -d)"
# inner directory
DATE="$(date --iso-8601=seconds)"
INNER_DIR="${PRODUCT}_logs_${DATE}"
DUMPS_DIR="${TMP_DIR}/${INNER_DIR}/dumps"
INTERNAL_DIR="${TMP_DIR}/${INNER_DIR}/internal"
STORAGE_DIR="${TMP_DIR}/${INNER_DIR}/storage"
mkdir "${TMP_DIR}/${INNER_DIR}"
mkdir "${DUMPS_DIR}"
mkdir "${INTERNAL_DIR}"
mkdir "${STORAGE_DIR}"
# output files
INFO_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_info"
SYSTEM_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_system"
KERNEL_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_kernel"
EVENT_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_events"
DETECTION_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_detections"
SCANS_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_scans"
SENT_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_sent_files"
BLOCKED_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_blocked_files"
DEVICES_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_devices"
CLOUD_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_cloud"
CFG_DUMP_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_cfg_dump"
CFG_EXPORT_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_cfg_export"
LSOF_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_lsof"
LSUSB_FILE="${TMP_DIR}/${INNER_DIR}/lsusb"
UDEV_FILE="${TMP_DIR}/${INNER_DIR}/udevadm"
TOP_FILE="${TMP_DIR}/${INNER_DIR}/top"
SELINUX_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_selinux"
DISTRO_FILE="${TMP_DIR}/${INNER_DIR}/distro_info"
MACHINE_FILE="${TMP_DIR}/${INNER_DIR}/machine_info"
NETWORK_FILE="${TMP_DIR}/${INNER_DIR}/network_info"
ERRORS_FILE="${TMP_DIR}/${INNER_DIR}/script_errors"
JOURNAL_FILE="${TMP_DIR}/${INNER_DIR}/journal_log"
PACKAGES_FILE="${TMP_DIR}/${INNER_DIR}/packages_info"
ENVIRON_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_environ"
PRIO_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_priority"
WAP_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_wap"
VASCANLOG_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_va_scans"
PMRESULTLOG_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_pm_results"
MODULES_FILE="${TMP_DIR}/${INNER_DIR}/${PRODUCT}_modules"
# redirect all errors into ERRORS_FILE
exec 2> "${ERRORS_FILE}"
section_header() {
echo ""
echo "#### $1 ####"
}
small_header() {
echo ""
echo "## $1 ##"
}
list_folder() {
small_header "$1"
ls -alZ "$1"
}
list_folder_only() {
small_header "$1"
ls -alZd "$1"
}
### SYSTEM AND PRODUCT INFO
section_header "STATUS" >> "${INFO_FILE}"
if which systemctl >/dev/null 2>/dev/null ; then
systemctl status "${PRODUCT}" --full --no-page >> "${INFO_FILE}"
fi
section_header "PROCESSES" >> "${INFO_FILE}"
ps -e -L -w -w -o user:25,group:25,uid,tid,pgid,ppid,pcpu,pmem,vsize,start_time,stat,c,rtprio,policy,pri,ni,time,label,cmd | grep "UID\|/${PROVIDER}/" | grep -v grep >> "${INFO_FILE}"
section_header "KERNEL" >> "${INFO_FILE}"
uname -a >> "${INFO_FILE}"
section_header "SELINUX" >> "${INFO_FILE}"
if which sestatus >/dev/null 2>/dev/null ; then
sestatus >> "${INFO_FILE}"
fi
if which getenforce >/dev/null 2>/dev/null ; then
getenforce >> "${INFO_FILE}"
( cd /var/log/audit && grep denied audit* | grep "${PROVIDER}_${PRODUCT}" ) >> "${SELINUX_FILE}"
else
echo "No SELinux found" >> "${INFO_FILE}"
fi
section_header "DATE" >> "${INFO_FILE}"
date >> "${INFO_FILE}"
section_header "MEMORY" >> "${INFO_FILE}"
df -h >> "${INFO_FILE}"
section_header "FILE SYSTEMS" >> "${INFO_FILE}"
mount >> "${INFO_FILE}"
if [ -f "/etc/fstab" ] ; then
section_header "/etc/fstab" >> "${INFO_FILE}"
cat "/etc/fstab" >> "${INFO_FILE}"
fi
section_header "FOLDERS" >> "${INFO_FILE}"
# root
list_folder_only "/" >> "${INFO_FILE}"
# /opt
list_folder_only "/opt" >> "${INFO_FILE}"
# /opt/eset
list_folder_only "/opt/${PROVIDER}" >> "${INFO_FILE}"
# binaries
echo "" >> "${INFO_FILE}"
ls -RalZ "${INSTALL_PATH}" >> "${INFO_FILE}"
# /var
list_folder_only "/var" >> "${INFO_FILE}"
# /var/run
list_folder_only "/var/run" >> "${INFO_FILE}"
#/var/run/ can be a symlink to /run
if [ -L "/var/run" ]; then
ls -alZdL "/var/run" >> "${INFO_FILE}"
fi
# /var/run/eset
list_folder_only "/var/run/${PROVIDER}" >> "${INFO_FILE}"
# sockets
list_folder "${RUN_PATH}/" >> "${INFO_FILE}"
# /var/opt
list_folder_only "/var/opt" >> "${INFO_FILE}"
# /var/opt/eset
list_folder_only "/var/opt/${PROVIDER}" >> "${INFO_FILE}"
# /var/opt/eset/product
list_folder "${VAR_PATH}" >> "${INFO_FILE}"
# configuration
list_folder "${VAR_PATH}/confd/" >> "${INFO_FILE}"
# license and activation info
list_folder "${VAR_PATH}/licensed/" >> "${INFO_FILE}"
# modules
list_folder "${VAR_PATH}/lib/" >> "${INFO_FILE}"
# modules - nups
list_folder "${VAR_PATH}/lib/data/updfiles" >> "${INFO_FILE}"
# cache
ls -RalZ "${VAR_PATH}/cache/" >> "${INFO_FILE}"
# /var/log/
list_folder_only "/var/log" >> "${INFO_FILE}"
# /var/log/eset/
list_folder_only "/var/log/${PROVIDER}" >> "${INFO_FILE}"
# logs
list_folder "${LOG_PATH}" >> "${INFO_FILE}"
list_folder "${LOG_PATH}/ods" >> "${INFO_FILE}"
### DISTRIBUTION INFO
section_header "VERSION" >> "${DISTRO_FILE}"
cat "/proc/version" >> "${DISTRO_FILE}"
section_header "RELEASE" >> "${DISTRO_FILE}"
if [ -x "/usr/bin/lsb_release" ] ; then
"/usr/bin/lsb_release" -a >> "${DISTRO_FILE}"
elif [ -f "/etc/redhat-release" ] ; then
cat "/etc/redhat-release" >> "${DISTRO_FILE}"
elif [ -f "/etc/sles-release" ] ; then
cat "/etc/sles-release" >> "${DISTRO_FILE}"
elif [ -f "/etc/os-release" ] ; then
cat "/etc/os-release" >> "${DISTRO_FILE}"
fi
### MACHINE INFO
section_header "STATUS" >> "${MACHINE_FILE}"
if which hostnamectl >/dev/null 2>&1; then
hostnamectl status >> "${MACHINE_FILE}"
fi
section_header "DMIDECODE" >> "${MACHINE_FILE}"
dmidecode >> "${MACHINE_FILE}"
section_header "LSCPU" >> "${MACHINE_FILE}"
lscpu >> "${MACHINE_FILE}"
section_header "CPU" >> "${MACHINE_FILE}"
cat "/proc/cpuinfo" >> "${MACHINE_FILE}"
section_header "MEMINFO" >> "${MACHINE_FILE}"
cat "/proc/meminfo" >> "${MACHINE_FILE}"
section_header "SECURE BOOT STATUS" >> "${MACHINE_FILE}"
if which mokutil >/dev/null 2>&1; then
mokutil --sb-state >> "${MACHINE_FILE}" 2>&1
else
od --address-radix=n --format=u1 /sys/firmware/efi/efivars/SecureBoot* >> "${MACHINE_FILE}" 2>&1
fi
### NETWORK INFO
section_header "IP ADDR" >> "${NETWORK_FILE}"
ip addr list >> "${NETWORK_FILE}"
if which netstat >/dev/null 2>/dev/null ; then
section_header "NETSTAT" >> "${NETWORK_FILE}"
netstat -tulpn >> "${NETWORK_FILE}"
elif which ss >/dev/null 2>/dev/null ; then
section_header "SS" >> "${NETWORK_FILE}"
ss -tulwnp >> "${NETWORK_FILE}"
fi
if [ -f "/etc/sysconfig/network" ] ; then
section_header "/etc/sysconfig/network" >> "${NETWORK_FILE}"
cat "/etc/sysconfig/network" >> "${NETWORK_FILE}"
fi
### KERNEL MODULE INFO AND LOGS
section_header "MODINFO" >> "${KERNEL_FILE}"
modinfo "${RTP_MODULE}" >> "${KERNEL_FILE}"
section_header "ERTP statistics" >> "${KERNEL_FILE}"
if [ -f "${RTP_STATS_PATH}" ] ; then
cat "${RTP_STATS_PATH}" >> "${KERNEL_FILE}"
fi
section_header "DMESG LOGS" >> "${KERNEL_FILE}"
if which dmesg >/dev/null 2>/dev/null ; then
dmesg -r | grep "${RTP_MODULE}" >> "${KERNEL_FILE}"
fi
### SYSTEM LOGS
if which journalctl >/dev/null 2>/dev/null ; then
journalctl -x | grep -i "${PROVIDER}" >> "${SYSTEM_FILE}"
journalctl -xe >> "${JOURNAL_FILE}"
fi
if [ -f "/var/log/messages" ] ; then
( cd /var/log && cp ./*messages* "${TMP_DIR}/${INNER_DIR}" )
fi
if [ -f "/var/log/syslog" ] ; then
( cd /var/log && cp ./*syslog* "${TMP_DIR}/${INNER_DIR}" )
fi
if [ -f "/var/log/debug" ] ; then
( cd /var/log && cp ./*debug* "${TMP_DIR}/${INNER_DIR}" )
fi
### CONFIGURATION
cp "${VAR_PATH}/confd/settings.json" "${TMP_DIR}/${INNER_DIR}"
ROOT_PROCESS_PID="$(pidof $ROOT_PROCESS_NAME)"
### following info is collected only for running product
if [ -n "$ROOT_PROCESS_PID" ]; then
## ENVIRONMENT VARIABLES AND THREAD PRIORITES OF RUNNING SERVICES
ALL_SERVICES_PIDS="$ROOT_PROCESS_PID $(cat /proc/"$ROOT_PROCESS_PID"/task/"$ROOT_PROCESS_PID"/children)"
for pid in $ALL_SERVICES_PIDS; do
{ cat "/proc/$pid/cmdline"; echo ""; } | tee -a "$ENVIRON_FILE" >> "$PRIO_FILE"
{ cat "/proc/$pid/environ"; echo ""; } >> "$ENVIRON_FILE"
# list io priority of threads
ps -eT | awk -v pattern="$pid" '$0~pattern{print $2}' | xargs ionice -p >> "$PRIO_FILE"
done
## PRODUCT LOGS
"${LSLOG_PATH}" --csv --events >> "${EVENT_FILE}"
"${LSLOG_PATH}" --csv --detections >> "${DETECTION_FILE}"
"${LSLOG_PATH}" --csv --scans >> "${SCANS_FILE}"
"${LSLOG_PATH}" --csv --sent-files >> "${SENT_FILE}"
"${LSLOG_PATH}" --csv --blocked-files >> "${BLOCKED_FILE}"
if "${LSLOG_PATH}" -h | grep "\-\-urls" >/dev/null ; then
echo "Url log row count (including header):" "$("${LSLOG_PATH}" --urls | wc -l)" >> "${WAP_FILE}"
fi
if "${LSLOG_PATH}" -h | grep "\-\-va\-scans" >/dev/null ; then
"${LSLOG_PATH}" --csv --va-scans >> "${VASCANLOG_FILE}"
fi
if "${LSLOG_PATH}" -h | grep "\-\-pm\-results" >/dev/null ; then
"${LSLOG_PATH}" --csv --pm-results-with-id >> "${PMRESULTLOG_FILE}"
fi
"${CFG_PATH}" --dump >> "${CFG_DUMP_FILE}"
"${CFG_PATH}" --export-xml="${CFG_EXPORT_FILE}"
## DEVICE CONTROL
if [ -f "${LSDEV_PATH}" ] ; then
section_header "DEVICES" >> "${DEVICES_FILE}"
"${LSDEV_PATH}" --csv --list >> "${DEVICES_FILE}"
section_header "LOGS" >> "${DEVICES_FILE}"
"${LSLOG_PATH}" --csv --device-control >> "${DEVICES_FILE}"
fi
## CLOUD
if [ -f "${CLOUD_PATH}" ] ; then
section_header "EDTD" >> "${CLOUD_FILE}"
"${CLOUD_PATH}" --edtd-status >> "${CLOUD_FILE}"
fi
else
echo "Warning: Product is not running. Please start it if possible." | tee "$ERRORS_FILE"
fi
### WAP
if [ -f "${WAP_USER_DATA_FILE_PATH}" ] ; then
cp "${WAP_USER_DATA_FILE_PATH}" "${TMP_DIR}/${INNER_DIR}"
fi
if [ -f "${WAP_CERT_CTL_LOG_FILE_PATH}" ] ; then
cp "${WAP_CERT_CTL_LOG_FILE_PATH}" "${TMP_DIR}/${INNER_DIR}"
fi
if [ -d "${WAP_VAR_DIR}" ] ; then
ls -lR "${WAP_VAR_DIR}" >> "${WAP_FILE}"
fi
section_header "NFTABLES" >> "${WAP_FILE}"
if [ -x /usr/sbin/nft ] ; then
NFT_COMMAND=/usr/sbin/nft
elif [ -x /sbin/nft ] ; then
NFT_COMMAND=/sbin/nft
fi
WAP_CHAIN_NAME="${PROVIDER}_${PRODUCT}_wap"
WAP_CHAIN_NAME6="${PROVIDER}_${PRODUCT}_wap6"
if [ -n "${NFT_COMMAND}" ] ; then
echo "${NFT_COMMAND}" >> "${WAP_FILE}"
${NFT_COMMAND} list chain ip ${WAP_CHAIN_NAME} output >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip ${WAP_CHAIN_NAME} prerouting >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip ${WAP_CHAIN_NAME} postrouting >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip ${WAP_CHAIN_NAME} excludes >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip6 ${WAP_CHAIN_NAME6} output >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip6 ${WAP_CHAIN_NAME6} prerouting >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip6 ${WAP_CHAIN_NAME6} postrouting >> "${WAP_FILE}" 2>&1
${NFT_COMMAND} list chain ip6 ${WAP_CHAIN_NAME6} excludes >> "${WAP_FILE}" 2>&1
else
echo "nft command not found" >> "${WAP_FILE}"
fi
section_header "SYSCTL" >> "${WAP_FILE}"
sysctl net.ipv4.conf.default.route_localnet >> "${WAP_FILE}"
sysctl net.ipv4.ip_forward >> "${WAP_FILE}"
sysctl net.ipv6.conf.all.forwarding >> "${WAP_FILE}"
section_header "USER AGENT" >> "${WAP_FILE}"
if [ -f /usr/lib/systemd/user/${PRODUCT}-user-agent.service ] ; then
if [ -f /etc/login.defs ]; then
UID_MIN="$(awk '/^UID_MIN/ {print $2}' /etc/login.defs 2>/dev/null)"
fi
UID_MIN=${UID_MIN:=1000}
for uid in $(pgrep -f '\<systemd .*--user\>' | xargs -L1 ps -o euid= -p | awk "\$1>=$UID_MIN"); do
echo "$uid" >> "${WAP_FILE}"
XDG_RUNTIME_DIR="/run/user/$uid" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" sudo -u "#$uid" --preserve-env=XDG_RUNTIME_DIR,DBUS_SESSION_BUS_ADDRESS systemctl --user status ${PRODUCT}-user-agent >> "${WAP_FILE}"
done
fi
### DEVICE FILE FOR WAP KERNEL MODULE
section_header "UDEV" >> "${WAP_FILE}"
if [ -e /dev/${EWAP_MODULE} ] ; then
ls -l /dev/${EWAP_MODULE} >> "${WAP_FILE}" 2>&1
if which udevadm >/dev/null 2>/dev/null ; then
udevadm info -n ${EWAP_MODULE} >> "${WAP_FILE}" 2>&1
fi
fi
### WAP KERNEL MODULE INFO AND LOGS
if modinfo "${EWAP_MODULE}" >/dev/null 2>/dev/null ; then
section_header "MODINFO" >> "${WAP_FILE}"
modinfo "${EWAP_MODULE}" >> "${WAP_FILE}"
section_header "DMESG LOGS" >> "${WAP_FILE}"
if which dmesg >/dev/null 2>/dev/null ; then
dmesg -r | grep "${EWAP_MODULE}" >> "${WAP_FILE}"
fi
fi
## UDEV FILE
if [ -f "${UDEV_FILE_PATH}" ] ; then
cp "${UDEV_FILE_PATH}" "${TMP_DIR}/${INNER_DIR}"
fi
### ECP LOGS
if [ -d "${ECP_LOGS_PATH}" ] ; then
cp -r "${ECP_LOGS_PATH}" "${TMP_DIR}/${INNER_DIR}"
fi
### LSOF
if which lsof >/dev/null 2>/dev/null ; then
for p in $(ps -Af | grep "${PRODUCT_PATH}" | grep -v grep | awk '{ print $2; }'); do
echo "" >> "${LSOF_FILE}"
lsof -p "$p" 2>/dev/null >> "${LSOF_FILE}"
done
fi
### LSUSB
if which lsusb >/dev/null 2>/dev/null ; then
lsusb --tree 2>/dev/null >> "${LSUSB_FILE}"
echo "" >> "${LSUSB_FILE}"
lsusb --verbose 2>/dev/null >> "${LSUSB_FILE}"
fi
### UDEVADM
if which udevadm >/dev/null 2>/dev/null ; then
udevadm info --export-db 2>/dev/null >> "${UDEV_FILE}"
fi
### TOP
if which top >/dev/null 2>/dev/null; then
top -b -w 512 -c -d 1 -n 5 2>/dev/null >> "${TOP_FILE}"
fi
# check installed packages
if which yum >/dev/null 2>/dev/null ; then
yum list installed >> "${PACKAGES_FILE}"
elif which dpkg >/dev/null 2>/dev/null ; then
dpkg -l >> "${PACKAGES_FILE}"
elif which rpm >/dev/null 2>/dev/null ; then
rpm -qa >> "${PACKAGES_FILE}"
else
echo "No supported package manager found" >> "${PACKAGES_FILE}"
fi
### MODULES
section_header "MODULES" >> "${MODULES_FILE}"
grep -ais "version\|type:" "${VAR_PATH}"/lib/*.dat >> "${MODULES_FILE}"
section_header "BACKUPS FOLDER" >> "${MODULES_FILE}"
list_folder "${MODULES_BACKUPS_DIR}/" >> "${MODULES_FILE}"
if [ -f "${MODULES_BACKUPS_DIR}/db.xml" ] ; then
section_header "db.xml" >> "${MODULES_FILE}"
cat "${MODULES_BACKUPS_DIR}/db.xml" >> "${MODULES_FILE}"
fi
### UNSENT BREAKPAD DUMPS
if [ -d "${VAR_PATH}/dumps" ]; then
cp -r "${VAR_PATH}/dumps" "${DUMPS_DIR}"
fi
if [ -d "${VAR_PATH}/cache/data/Diagnostics" ]; then
cp -r "${VAR_PATH}/cache/data/Diagnostics" "${DUMPS_DIR}"
fi
### LOGS FROM MODULES
if [ -d "${VAR_PATH}/cache/data/Logs" ]; then
cp "${VAR_PATH}/cache/data/Logs/"* "${TMP_DIR}/${INNER_DIR}"
fi
### INTERNAL LOGS
if [ -d "${INTERNAL_LOG_PATH}" ]; then
cp "${INTERNAL_LOG_PATH}/"* "${INTERNAL_DIR}"
fi
### PKGID
cp "${INSTALL_PATH}/etc/pkgid" "${TMP_DIR}/${INNER_DIR}"
### PRODUCT DATABASE
if [ -f "${LOG_PATH}/reports.db" ] ; then
cp "${LOG_PATH}/reports.db" "${TMP_DIR}/${INNER_DIR}"
fi
### LOCAL STORAGE
if [ -d "${LOCAL_STORAGE_PATH}" ]; then
cp -r "${LOCAL_STORAGE_PATH}/"* "${STORAGE_DIR}"
fi
### ARCHIVE
ARCHIVE_PATH="${PWD}/${PRODUCT}_logs.tar.gz"
( cd "${TMP_DIR}" && tar czf "${ARCHIVE_PATH}" "${INNER_DIR}" )
echo "Logs has been collected to: ${ARCHIVE_PATH}"
rm -rf "${TMP_DIR}"