diff --git a/build/lib/scripts/gather_debug_info.sh b/build/lib/scripts/gather_debug_info.sh new file mode 100755 index 000000000..a47ca60bd --- /dev/null +++ b/build/lib/scripts/gather_debug_info.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Define the output file +OUTPUT_FILE="system_debug_info.txt" + +# Check if the script is run as root, if not, restart with sudo +if [ "$(id -u)" -ne 0 ]; then + exec sudo bash "$0" "$@" +fi + +# Create or clear the output file and add a header +echo "===================================================================" > "$OUTPUT_FILE" +echo " StartOS System Debug Information " >> "$OUTPUT_FILE" +echo "===================================================================" >> "$OUTPUT_FILE" +echo "Generated on: $(date)" >> "$OUTPUT_FILE" +echo "" >> "$OUTPUT_FILE" + +# Function to check if a command exists +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +# Function to run a command if it exists and append its output to the file with headers +run_command() { + local CMD="$1" + local DESC="$2" + local CMD_NAME="${CMD%% *}" # Extract the command name (first word) + + if command_exists "$CMD_NAME"; then + echo "===================================================================" >> "$OUTPUT_FILE" + echo "COMMAND: $CMD" >> "$OUTPUT_FILE" + echo "DESCRIPTION: $DESC" >> "$OUTPUT_FILE" + echo "===================================================================" >> "$OUTPUT_FILE" + echo "" >> "$OUTPUT_FILE" + eval "$CMD" >> "$OUTPUT_FILE" 2>&1 + echo "" >> "$OUTPUT_FILE" + else + echo "===================================================================" >> "$OUTPUT_FILE" + echo "COMMAND: $CMD" >> "$OUTPUT_FILE" + echo "DESCRIPTION: $DESC" >> "$OUTPUT_FILE" + echo "===================================================================" >> "$OUTPUT_FILE" + echo "SKIPPED: Command not found" >> "$OUTPUT_FILE" + echo "" >> "$OUTPUT_FILE" + fi +} + +# Collecting basic system information +run_command "start-cli --version; start-cli git-info" "StartOS CLI version and Git information" +run_command "hostname" "Hostname of the system" +run_command "uname -a" "Kernel version and system architecture" + +# Services Info +run_command "start-cli lxc stats" "All Running Services" + +# Collecting CPU information +run_command "lscpu" "CPU architecture information" +run_command "cat /proc/cpuinfo" "Detailed CPU information" + +# Collecting memory information +run_command "free -h" "Available and used memory" +run_command "cat /proc/meminfo" "Detailed memory information" + +# Collecting storage information +run_command "lsblk" "List of block devices" +run_command "df -h" "Disk space usage" +run_command "fdisk -l" "Detailed disk partition information" + +# Collecting network information +run_command "ip a" "Network interfaces and IP addresses" +run_command "ip route" "Routing table" +run_command "netstat -i" "Network interface statistics" + +# Collecting RAID information (if applicable) +run_command "cat /proc/mdstat" "List of RAID devices (if applicable)" + +# Collecting virtualization information +run_command "egrep -c '(vmx|svm)' /proc/cpuinfo" "Check if CPU supports virtualization" +run_command "systemd-detect-virt" "Check if the system is running inside a virtual machine" + +# Final message +echo "===================================================================" >> "$OUTPUT_FILE" +echo " End of StartOS System Debug Information " >> "$OUTPUT_FILE" +echo "===================================================================" >> "$OUTPUT_FILE" + +# Prompt user to send the log file to a Start9 Technician +echo "System debug information has been collected in $OUTPUT_FILE." +echo "" +echo "Would you like to send this log file to a Start9 Technician? (yes/no)" +read SEND_LOG + +if [[ "$SEND_LOG" == "yes" || "$SEND_LOG" == "y" ]]; then + if command -v wormhole >/dev/null 2>&1; then + echo "" + echo "===================================================================" + echo " Running wormhole to send the file. Please follow the " + echo " instructions and provide the code to the Start9 support team. " + echo "===================================================================" + wormhole send "$OUTPUT_FILE" + echo "===================================================================" + else + echo "Error: wormhole command not found." + fi +else + echo "Log file not sent. You can manually share $OUTPUT_FILE with the Start9 support team if needed." +fi \ No newline at end of file diff --git a/debian/postinst b/debian/postinst index d20f778a4..3714df8d4 100755 --- a/debian/postinst +++ b/debian/postinst @@ -101,6 +101,7 @@ EOF rm -rf /var/lib/tor/* ln -sf /usr/lib/startos/scripts/tor-check.sh /usr/bin/tor-check +ln -sf /usr/lib/startos/scripts/gather_debug_info.sh /usr/bin/gather-debug echo "fs.inotify.max_user_watches=1048576" > /etc/sysctl.d/97-embassy.conf