Initial commit of Ansible inventory playbooks
This commit is contained in:
41
host_discovery.yml
Normal file
41
host_discovery.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
- name: Host Discovery with Nmap Probing Port 22
|
||||
hosts: localhost
|
||||
connection: local
|
||||
vars:
|
||||
networks:
|
||||
- 192.168.1.0/24 # Add your networks here
|
||||
output_file: discovered_hosts.json
|
||||
tasks:
|
||||
- name: Install nmap if not present
|
||||
become: true
|
||||
ansible.builtin.apt:
|
||||
name: nmap
|
||||
state: present
|
||||
update_cache: true
|
||||
- name: Perform Nmap scan on each network
|
||||
ansible.builtin.shell:
|
||||
cmd: nmap -sT -p 22 -Pn --open -R -oG - {{ item }}
|
||||
register: scans
|
||||
loop: "{{ networks }}"
|
||||
changed_when: false
|
||||
- name: Combine all scan outputs
|
||||
ansible.builtin.set_fact:
|
||||
all_output: "{{ scans.results | map(attribute='stdout') | join('\n') }}"
|
||||
- name: Extract host lines
|
||||
ansible.builtin.set_fact:
|
||||
host_lines: "{{ all_output.splitlines() | select('search', '^Host:') | list }}"
|
||||
- name: Parse hosts into list
|
||||
ansible.builtin.set_fact:
|
||||
hosts_list: "{{ hosts_list | default([]) + [{'ip': ip, 'hostname': hostname}] }}"
|
||||
loop: "{{ host_lines }}"
|
||||
vars:
|
||||
line: "{{ item }}"
|
||||
host_part: "{{ line.split('\t')[0] }}"
|
||||
parts: "{{ host_part.split(' ') }}"
|
||||
ip: "{{ parts[1] }}"
|
||||
hostname: "{{ parts[2] | replace('(', '') | replace(')', '') }}"
|
||||
- name: Save to JSON file
|
||||
ansible.builtin.copy:
|
||||
content: "{{ {'hosts': hosts_list} | to_nice_json }}"
|
||||
dest: "{{ output_file }}"
|
||||
Reference in New Issue
Block a user