Обновить playbooks/scan_inventory.yml
This commit is contained in:
@@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
- name: "Сканирование сети (Rootless Mode - TCP Only)"
|
- name: "Сканирование сети (Rootless Mode - Fix Regex)"
|
||||||
hosts: localhost
|
hosts: localhost
|
||||||
connection: local
|
connection: local
|
||||||
gather_facts: no
|
gather_facts: no
|
||||||
# become: yes <--- УДАЛЕНО: Работаем без прав root
|
|
||||||
vars:
|
vars:
|
||||||
# --- SEMAPHORE API ---
|
# --- SEMAPHORE API ---
|
||||||
semaphore_url: "http://192.168.0.198:9999"
|
semaphore_url: "http://192.168.0.198:9999"
|
||||||
@@ -36,7 +35,6 @@
|
|||||||
tasks:
|
tasks:
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# ШАГ 1: Поиск живых хостов
|
# ШАГ 1: Поиск живых хостов
|
||||||
# Используем -sn (обычный пользователь сделает TCP ping, это ок)
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
- name: Ping Sweep
|
- name: Ping Sweep
|
||||||
command: "nmap -sn -n --min-rate 1000 -T4 -oG - {{ subnets | join(' ') }}"
|
command: "nmap -sn -n --min-rate 1000 -T4 -oG - {{ subnets | join(' ') }}"
|
||||||
@@ -54,13 +52,9 @@
|
|||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# ШАГ 2: Сканирование портов (TCP Connect)
|
# ШАГ 2: Сканирование портов (TCP Connect)
|
||||||
# Используем -sT (не требует root) вместо -sS/-sU
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
- name: TCP Port Scan & Name Discovery
|
- name: TCP Port Scan & Name Discovery
|
||||||
shell: |
|
shell: |
|
||||||
# Сканируем ключевые TCP порты:
|
|
||||||
# 22 (SSH/Linux), 445 (SMB/Windows), 8291 (Winbox/MikroTik), 9100 (JetDirect/Printer)
|
|
||||||
# --script smb-os-discovery пытается узнать имя Windows (работает по TCP, root не нужен)
|
|
||||||
nmap -sT -p 22,445,8291,9100 \
|
nmap -sT -p 22,445,8291,9100 \
|
||||||
--script smb-os-discovery \
|
--script smb-os-discovery \
|
||||||
-Pn -n -T4 {{ item }}
|
-Pn -n -T4 {{ item }}
|
||||||
@@ -69,19 +63,22 @@
|
|||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# ШАГ 3: Классификация (по открытым портам)
|
# ШАГ 3: Классификация (ИСПРАВЛЕНО)
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
- name: Анализ результатов
|
- name: Анализ результатов (Debug Mode)
|
||||||
set_fact:
|
set_fact:
|
||||||
classified_hosts: "{{ classified_hosts | default([]) + [ host_data ] }}"
|
classified_hosts: "{{ classified_hosts | default([]) + [ host_data ] }}"
|
||||||
vars:
|
vars:
|
||||||
out: "{{ item.stdout }}"
|
out: "{{ item.stdout }}"
|
||||||
ip: "{{ item.item }}"
|
ip: "{{ item.item }}"
|
||||||
|
|
||||||
# Пытаемся найти имя компьютера через SMB (для Windows)
|
# БЕЗОПАСНЫЙ ПОИСК ИМЕНИ:
|
||||||
smb_name: "{{ out | regex_search('Computer name: ([\\w-]+)', '\\1') | first | default('') }}"
|
# Используем regex_findall вместо search.
|
||||||
|
# Если ничего не найдено, вернется пустой список [], и default('') сработает корректно.
|
||||||
|
smb_matches: "{{ out | regex_findall('Computer name: ([\\w-]+)') }}"
|
||||||
|
smb_name: "{{ smb_matches | first | default('') }}"
|
||||||
|
|
||||||
# ЛОГИКА ОПРЕДЕЛЕНИЯ ТИПА (По открытым портам)
|
# ЛОГИКА ОПРЕДЕЛЕНИЯ ТИПА
|
||||||
detected_type: >-
|
detected_type: >-
|
||||||
{% if '445/tcp open' in out %}windows
|
{% if '445/tcp open' in out %}windows
|
||||||
{% elif '8291/tcp open' in out %}mikrotik
|
{% elif '8291/tcp open' in out %}mikrotik
|
||||||
@@ -99,7 +96,7 @@
|
|||||||
type: "{{ detected_type }}"
|
type: "{{ detected_type }}"
|
||||||
name: "{{ final_name }}"
|
name: "{{ final_name }}"
|
||||||
loop: "{{ scan_results.results }}"
|
loop: "{{ scan_results.results }}"
|
||||||
no_log: true
|
# no_log: true <--- УБРАЛИ, ЧТОБЫ ВИДЕТЬ ОШИБКУ, ЕСЛИ ОНА БУДЕТ
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# ШАГ 4: Группировка
|
# ШАГ 4: Группировка
|
||||||
@@ -189,7 +186,7 @@
|
|||||||
when: list_tik | length > 0
|
when: list_tik | length > 0
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
# ШАГ 7: Отправка Принтеров (если нужны)
|
# ШАГ 7: Отправка Принтеров
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
- block:
|
- block:
|
||||||
- name: Генерация инвентаря Принтеров
|
- name: Генерация инвентаря Принтеров
|
||||||
|
|||||||
Reference in New Issue
Block a user