---
- name: Kali Linux 系统测试
  hosts: kali
  become: yes
  gather_facts: yes
  
  vars:
    test_results_dir: "/tmp/kali_test_results"
    test_log_file: "{{ test_results_dir }}/kali_test.log"
    
  tasks:
    - name: 创建测试结果目录
      file:
        path: "{{ test_results_dir }}"
        state: directory
        mode: '0755'
      
    - name: 初始化测试日志
      copy:
        content: "Kali Linux 系统测试日志 - {{ ansible_date_time.iso8601 }}\n\n"
        dest: "{{ test_log_file }}"
        
    - name: 记录系统基本信息
      block:
        - name: 获取系统信息
          setup:
          register: system_info
            
        - name: 记录系统信息到日志
          copy:
            content: |
              === 系统基本信息 ===
              主机名: {{ ansible_hostname }}
              操作系统: {{ ansible_distribution }} {{ ansible_distribution_version }}
              内核版本: {{ ansible_kernel }}
              架构: {{ ansible_architecture }}
              CPU核心数: {{ ansible_processor_vcpus }}
              内存总量: {{ ansible_memtotal_mb }} MB
              磁盘空间: {{ ansible_mounts | map(attribute='size_total') | sum | human_readable }}
              
            dest: "{{ test_results_dir }}/system_info.txt"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] 系统基本信息收集完成"
            
    - name: 测试网络连接
      block:
        - name: 测试网络连通性
          uri:
            url: https://www.google.com
            method: GET
            timeout: 10
          register: network_test
          ignore_errors: yes
            
        - name: 记录网络测试结果
          lineinfile:
            path: "{{ test_log_file }}"
            line: "{% if network_test.failed %}[✗] 网络连接测试失败{% else %}[✓] 网络连接测试成功{% endif %}"
            
    - name: 测试包管理器
      block:
        - name: 更新包列表
          apt:
            update_cache: yes
          changed_when: false
            
        - name: 记录包管理器测试结果
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] APT包管理器工作正常"
            
    - name: 检查Kali工具
      block:
        - name: 检查常见Kali工具是否安装
          command: "which {{ item }}"
          loop:
            - nmap
            - metasploit-framework
            - wireshark
            - john
            - hydra
            - sqlmap
            - burpsuite
            - aircrack-ng
          register: tool_check
          ignore_errors: yes
          changed_when: false
            
        - name: 记录工具检查结果
          copy:
            content: |
              === Kali工具检查结果 ===
              {% for result in tool_check.results %}
              {{ result.item }}: {% if result.rc == 0 %}已安装{% else %}未安装{% endif %}
              {% endfor %}
              
            dest: "{{ test_results_dir }}/tool_check.txt"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] Kali工具检查完成"
            
    - name: 测试系统安全性
      block:
        - name: 检查防火墙状态
          command: "ufw status"
          register: firewall_status
          ignore_errors: yes
          changed_when: false
            
        - name: 检查SSH配置
          command: "grep -E '^PermitRootLogin|^PasswordAuthentication' /etc/ssh/sshd_config"
          register: ssh_config
          ignore_errors: yes
          changed_when: false
            
        - name: 记录安全检查结果
          copy:
            content: |
              === 系统安全检查 ===
              防火墙状态:
              {{ firewall_status.stdout }}
              
              SSH配置:
              {{ ssh_config.stdout }}
              
            dest: "{{ test_results_dir }}/security_check.txt"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] 系统安全检查完成"
            
    - name: 测试系统性能
      block:
        - name: 获取CPU使用率
          command: "top -bn1 | grep 'Cpu(s)'"
          register: cpu_usage
          changed_when: false
            
        - name: 获取内存使用情况
          command: "free -h"
          register: memory_usage
          changed_when: false
            
        - name: 获取磁盘使用情况
          command: "df -h"
          register: disk_usage
          changed_when: false
            
        - name: 记录性能测试结果
          copy:
            content: |
              === 系统性能信息 ===
              CPU使用率:
              {{ cpu_usage.stdout }}
              
              内存使用情况:
              {{ memory_usage.stdout }}
              
              磁盘使用情况:
              {{ disk_usage.stdout }}
              
            dest: "{{ test_results_dir }}/performance.txt"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] 系统性能测试完成"
            
    - name: 测试网络工具
      block:
        - name: 测试ping命令
          command: "ping -c 4 8.8.8.8"
          register: ping_test
          ignore_errors: yes
          changed_when: false
            
        - name: 测试nslookup命令
          command: "nslookup google.com"
          register: nslookup_test
          ignore_errors: yes
          changed_when: false
            
        - name: 记录网络工具测试结果
          copy:
            content: |
              === 网络工具测试 ===
              Ping测试结果:
              {{ ping_test.stdout }}
              
              NSlookup测试结果:
              {{ nslookup_test.stdout }}
              
            dest: "{{ test_results_dir }}/network_tools.txt"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] 网络工具测试完成"
            
    - name: 生成测试报告
      block:
        - name: 创建测试报告
          copy:
            content: |
              # Kali Linux 系统测试报告
              
              **测试时间**: {{ ansible_date_time.iso8601 }}
              **测试主机**: {{ ansible_hostname }}
              
              ## 测试结果摘要
              
              {% if network_test.failed %}- [✗] 网络连接测试失败{% else %}- [✓] 网络连接测试成功{% endif %}
              - [✓] APT包管理器工作正常
              - [✓] Kali工具检查完成
              - [✓] 系统安全检查完成
              - [✓] 系统性能测试完成
              - [✓] 网络工具测试完成
              
              ## 详细结果
              
              请查看以下文件获取详细测试结果：
              - system_info.txt: 系统基本信息
              - tool_check.txt: Kali工具检查结果
              - security_check.txt: 系统安全检查
              - performance.txt: 系统性能信息
              - network_tools.txt: 网络工具测试
              - kali_test.log: 完整测试日志
              
              ## 建议
              
              {% for result in tool_check.results %}
              {% if result.rc != 0 %}
              - 建议安装 {{ result.item }} 工具: `sudo apt install {{ result.item }}`
              {% endif %}
              {% endfor %}
              
            dest: "{{ test_results_dir }}/README.md"
            
        - name: 记录到主日志
          lineinfile:
            path: "{{ test_log_file }}"
            line: "[✓] 测试报告生成完成"
            
    - name: 显示测试结果位置
      debug:
        msg: "Kali Linux 系统测试完成！测试结果保存在 {{ test_results_dir }} 目录中"
        
    - name: 显示测试日志最后几行
      command: "tail -10 {{ test_log_file }}"
      register: log_tail
      
    - name: 输出测试日志摘要
      debug:
        msg: "{{ log_tail.stdout_lines }}"