#!/bin/bash

# Function to execute a command and capture its output and errors
execute_command() {
    local command=$1
    local output=$(eval "$command" 2>&1)
    echo "$output"
}

# Function to generate text report
generate_text_report() {
    local hostname=$(hostname)
    local date_time=$(TZ="Asia/Shanghai" date '+%Y-%m-%d_%H-%M-%S_%Z')
    local report_name="${hostname}-${date_time}.txt"

    {
        echo "Linux - 应急响应报告报告"
        echo ""
        echo "报告生成日期 (北京时间): $(TZ="Asia/Shanghai" date '+%Y-%m-%d %H:%M:%S %Z')"
        echo "报告生成者: $USER"
        echo ""
    } > "$report_name"

    # Loop through the provided commands and add sections to the text report
    commands=(
        "ifconfig && ip a|网络接口和IP地址"
        "arp -a|ARP表"
        "hostname|显示系统主机名"
        "uname -a|显示系统信息，包括内核版本"
        "df -h|显示磁盘使用情况"
        "free -m|显示内存使用情况"
        "more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/|检查启动项文件"
        "cat /etc/crontab|查询计划任务"
        "chkconfig --list|检查自启动服务"
        "ps aux|显示运行中的进程"
        "top -n 1 -o %CPU|显示实时系统统计信息"
        "cat /etc/passwd|用户账户"
        "cat /etc/shadow|密码信息"
        "cat /etc/group|用户组信息."
        "cat /etc/sudoers|sudoers文件内容"
        "lastlog|最后登录信息"
        "tail /var/log/auth.log|认证日志"
        "tail /var/log/syslog.log|系统日志"
        "tail /var/log/demon.log|守护进程日志."
        "tail /var/log/apache/access.log|Apache访问日志"
        "tail /var/log/nginx/access.log|Nginx访问日志"
        "tail /var/log/mysqld.log|MySQL服务器日志"
        "ps -aux|详细进程信息"
        "uptime|系统运行时间"
        "cat /proc/meminfo|内存信息"
        "ps aux|当前运行的进程"
        "last -f /var/log/wtmp|登录历史"
        "cat /etc/resolv.conf|DNS解析器配置"
        "cat /etc/hosts|显示Hosts文件内容"
        "ls -alR /proc/*/cwd|列出进程的当前工作目录"
        "iptables -L -v -n|显示防火墙规则"
        "service --status-all|列出所有可用的服务"
        "find / -type f -size +512k -exec ls -lh {} \;|查找并列出系统上的大文件"
        "netstat -punta|网络统计"
        "echo \$PATH|显示系统的PATH环境变量"
    )

    for command_info in "${commands[@]}"; do
        IFS="|" read -r command description <<<"$command_info"
        echo "命令: $description - $command" >> "$report_name"
        output=$(execute_command "$command")
        echo "输出:" >> "$report_name"
        echo "$output" >> "$report_name"
        echo "" >> "$report_name"
        echo "命令完成: $command_info"  # Verbose output
    done

    echo "文本报告已生成: $report_name"
}

# Run checks and generate the report
generate_text_report
