Обновить playbooks/scan_inventory.yml

This commit is contained in:
2025-12-10 11:48:04 +00:00
parent 10c881dc5e
commit c59199e9a6

View File

@@ -1,5 +1,5 @@
---
- name: "Сканирование сети (Rootless Mode - Fix Regex)"
- name: "Сканирование сети (Final Fix - Regex)"
hosts: localhost
connection: local
gather_facts: no
@@ -63,27 +63,26 @@
changed_when: false
# ----------------------------------------------------------------
# ШАГ 3: Классификация (ИСПРАВЛЕНО)
# ШАГ 3: Классификация (ИСПРАВЛЕНО НА REGEX)
# ----------------------------------------------------------------
- name: Анализ результатов (Debug Mode)
- name: Анализ результатов
set_fact:
classified_hosts: "{{ classified_hosts | default([]) + [ host_data ] }}"
vars:
out: "{{ item.stdout }}"
ip: "{{ item.item }}"
# БЕЗОПАСНЫЙ ПОИСК ИМЕНИ:
# Используем regex_findall вместо search.
# Если ничего не найдено, вернется пустой список [], и default('') сработает корректно.
# Поиск имени (безопасный метод)
smb_matches: "{{ out | regex_findall('Computer name: ([\\w-]+)') }}"
smb_name: "{{ smb_matches | first | default('') }}"
# ЛОГИКА ОПРЕДЕЛЕНИЯ ТИПА
# ЛОГИКА ОПРЕДЕЛЕНИЯ ТИПА (Используем regex_search для игнорирования лишних пробелов)
# \s+ означает "один или больше пробелов"
detected_type: >-
{% if '445/tcp open' in out %}windows
{% elif '8291/tcp open' in out %}mikrotik
{% elif '9100/tcp open' in out %}printer
{% elif '22/tcp open' in out %}linux
{% if out | regex_search('445/tcp\s+open') %}windows
{% elif out | regex_search('8291/tcp\s+open') %}mikrotik
{% elif out | regex_search('9100/tcp\s+open') %}printer
{% elif out | regex_search('22/tcp\s+open') %}linux
{% else %}other{% endif %}
# Формируем имя
@@ -96,7 +95,7 @@
type: "{{ detected_type }}"
name: "{{ final_name }}"
loop: "{{ scan_results.results }}"
# no_log: true <--- УБРАЛИ, ЧТОБЫ ВИДЕТЬ ОШИБКУ, ЕСЛИ ОНА БУДЕТ
no_log: true
# ----------------------------------------------------------------
# ШАГ 4: Группировка
@@ -108,6 +107,15 @@
list_tik: "{{ classified_hosts | selectattr('type', 'equalto', 'mikrotik') | list }}"
list_prn: "{{ classified_hosts | selectattr('type', 'equalto', 'printer') | list }}"
- name: СТАТИСТИКА (Что нашли)
debug:
msg:
- "Всего живых IP: {{ active_ips | length }}"
- "Windows: {{ list_win | length }}"
- "MikroTik: {{ list_tik | length }}"
- "Linux: {{ list_lin | length }}"
- "Printers: {{ list_prn | length }}"
# ----------------------------------------------------------------
# ШАГ 5: Отправка Windows
# ----------------------------------------------------------------
@@ -186,7 +194,7 @@
when: list_tik | length > 0
# ----------------------------------------------------------------
# ШАГ 7: Отправка Принтеров
# ШАГ 7: Отправка Принтеров (если нужны)
# ----------------------------------------------------------------
- block:
- name: Генерация инвентаря Принтеров