From 0f80c6d9ca95741983011cb0c55926f0f8f7cc74 Mon Sep 17 00:00:00 2001 From: ogrechko Date: Wed, 10 Dec 2025 11:04:48 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20playbooks/scan=5Finventory.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playbooks/scan_inventory.yml | 49 ++++++++++++++---------------------- 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/playbooks/scan_inventory.yml b/playbooks/scan_inventory.yml index 2d00e72..9c2682c 100644 --- a/playbooks/scan_inventory.yml +++ b/playbooks/scan_inventory.yml @@ -8,35 +8,30 @@ # --- SEMAPHORE API --- semaphore_url: "http://192.168.0.198:9999" semaphore_project_id: 1 - #semaphore_key_id: 7 semaphore_api_token: "9ojexqiwt1xkemig7j1bd1pe-frh7hkre4reryk2occ=" - inventory_name: "Smart Network Scan" # --- ID КЛЮЧЕЙ ДЛЯ БУДУЩИХ ПОДКЛЮЧЕНИЙ --- - # Даже если мы нашли устройство по SNMP, для управления им позже нужен ключ. - # Если ключей нет, можно указать ID "пустого" ключа или любого существующего. key_windows: 7 key_linux: 8 key_mikrotik: 9 - key_printers: 7 # Можно тот же, принтерами обычно ansible не управляет + key_printers: 7 - # --- СЕТИ --- - subnets: [ - "192.168.0.0/24" - "192.168.0.0/23" - "192.168.2.0/24" - "192.168.3.0/24" - "172.19.8.0/24" - "172.19.9.0/24" - "172.19.10.0/24" - "172.19.24.0/24" - "172.19.26.0/24" - "172.19.40.0/24" - "172.19.42.0/24" - "172.19.56.0/24" - "172.19.58.0/24" - "172.19.90.0/24" - ] + # --- СЕТИ (ИСПРАВЛЕНО: Правильный формат списка YAML) --- + subnets: + - "192.168.0.0/24" + - "192.168.0.0/23" + - "192.168.2.0/24" + - "192.168.3.0/24" + - "172.19.8.0/24" + - "172.19.9.0/24" + - "172.19.10.0/24" + - "172.19.24.0/24" + - "172.19.26.0/24" + - "172.19.40.0/24" + - "172.19.42.0/24" + - "172.19.56.0/24" + - "172.19.58.0/24" + - "172.19.90.0/24" # SNMP Community (пароль для чтения) snmp_community: "public" @@ -58,8 +53,6 @@ # ---------------------------------------------------------------- # ШАГ 2: Опрос через SNMP + Проверка портов - # -sU -p 161: Сканируем UDP порт SNMP - # --script snmp-sysdescr: Скрипт, который тянет описание ОС # ---------------------------------------------------------------- - name: SNMP Discovery shell: | @@ -81,11 +74,10 @@ out: "{{ item.stdout }}" ip: "{{ item.item }}" - # Пытаемся вытащить строку sysDescr из вывода Nmap - # Пример: "SNMPv2-MIB::sysDescr.0: RouterOS rb750..." + # Пытаемся вытащить строку sysDescr snmp_desc: "{{ out | regex_search('sysDescr\\.0: ([^\\n]+)', '\\1') | first | default('') }}" - # Определяем тип на основе SNMP ответа (или открытых портов, если SNMP молчит) + # Определяем тип detected_type: >- {% if 'Windows' in snmp_desc or '445/tcp open' in out %}windows {% elif 'RouterOS' in snmp_desc or 'MikroTik' in snmp_desc or '8291/tcp open' in out %}mikrotik @@ -93,8 +85,6 @@ {% elif 'JetDirect' in snmp_desc or 'LaserJet' in snmp_desc or 'Samsung' in snmp_desc or 'Kyocera' in snmp_desc or '9100/tcp open' in out %}printer {% else %}other{% endif %} - # Формируем имя: Либо берем из SNMP, либо генерируем host_IP - # Часто в SNMP имя есть в sysName, но для упрощения оставим генерацию или возьмем первое слово из описания host_data: ip: "{{ ip }}" type: "{{ detected_type }}" @@ -185,7 +175,6 @@ # ---------------------------------------------------------------- # ШАГ 7: Отправка в Semaphore (Принтеры) - # Принтеры полезно видеть, но ansible ими обычно не управляет # ---------------------------------------------------------------- - block: - set_fact: