108 lines
3.0 KiB
YAML
Executable File
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 }}" |