Files

108 lines
3.0 KiB
YAML
Executable File

---
- name: Netzwerk Scan ARP + NMAP CSV
hosts: localhost
gather_facts: false
vars:
dns_server:
- "192.168.1.230"
lokales_netz:
- "192.168.1.0/24"
entfernte_netze:
- "9.99.0.0/24"
- "9.99.10.0/24"
- "9.99.20.0/24"
- "9.99.30.0/24"
- "9.99.40.0/24"
- "9.99.50.0/24"
- "9.99.60.0/24"
- "9.99.70.0/24"
csv_datei: "/mnt/scripte/NETWORK-SCAN/netzwerk_scan_combined.csv"
tasks:
####################################################
# ARP Scan lokales Netzwerk
####################################################
- name: ARP Scan lokales Netz
ansible.builtin.command:
cmd: "sudo arp-scan {{ item }}"
loop: "{{ lokales_netz }}"
register: arp_ergebnis
- name: ARP Daten sammeln
ansible.builtin.set_fact:
hosts_liste: "{{ hosts_liste | default([]) + [ {
'ip': item.split()[0],
'mac': item.split()[1],
'hersteller': item.split()[2:] | join(' ')
} ] }}"
loop: "{{ arp_ergebnis.results | map(attribute='stdout_lines') | flatten }}"
when:
- item.split() | length >= 2
- item.split()[0] is match('^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+$')
####################################################
# NMAP Scan entfernte Netzwerke
####################################################
- name: NMAP Scan entfernte Netze
ansible.builtin.command:
cmd: "nmap -sn {{ item }}"
loop: "{{ entfernte_netze }}"
register: nmap_ergebnis
- name: NMAP IPs hinzufügen
ansible.builtin.set_fact:
hosts_liste: "{{ hosts_liste | default([]) + [ {
'ip': item | regex_replace('.*for ', ''),
'mac': 'unbekannt',
'hersteller': 'unbekannt'
} ] }}"
loop: >-
{{
nmap_ergebnis.results
| map(attribute='stdout_lines')
| flatten
}}
when:
- "'Nmap scan report for' in item"
####################################################
# Hostnamen suchen
####################################################
- name: Hostnamen über zentralen DNS abfragen
ansible.builtin.shell:
cmd: "dig @{{ dns_server }} -x {{ item.ip }} +short | sed 's/\\.$//'"
loop: "{{ hosts_liste }}"
register: hostname_ergebnis
changed_when: false
failed_when: false
####################################################
# CSV schreiben
####################################################
- name: CSV erstellen
ansible.builtin.copy:
dest: "{{ csv_datei }}"
content: |
IP : HOSTNAME : MAC ADRESSE : HERSTELLER
{% for host in hosts_liste %}
{{ host.ip }} : {{ hostname_ergebnis.results[loop.index0].stdout | trim | default('unbekannt', true) }} : {{ host.mac }} : {{ host.hersteller }}
{% endfor %}
- name: Ergebnis anzeigen
ansible.builtin.debug:
msg: "Scan fertig: {{ csv_datei }}"