This commit is contained in:
2024-11-25 17:23:00 +01:00
parent 69295768d5
commit 34a375c50d
12 changed files with 618 additions and 91 deletions

View File

@@ -1,7 +1,6 @@
[defaults]
#inventory = /home/user06/hosts
inventory = ./test.py
inventory = ./main.py
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S on {host}
private_key_file = /home/jonnybravo/.ssh/ansible-test
gathering = smart

View File

@@ -0,0 +1,93 @@
#! /usr/bin/env python3.12
import scapy.all as scapy
import json, socket, csv, os, errno, sys
def scan(ip):
arp_request = scapy.ARP(pdst=ip)
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast / arp_request
answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0]
results = []
for element in answered_list:
result = {"ip": element[1].psrc, "mac": element[1].hwsrc, 'hostname': socket.gethostbyaddr(element[1].psrc)[0]}
results.append(result)
return results
def port_open(address: str, dest_port=22) -> bool:
#result = sock.connect_ex(('ras-dan-01.local',22))
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.settimeout(5)
result = sock.connect_ex((address,dest_port))
if result == 0:
return True
else:
return False
def scan_csv(csvfile=str, colm="hostname"):
if os.path.exists(csvfile):
hostlist = []
with open(csvfile) as csv_file:
csv_reader = csv.DictReader(csv_file, delimiter=',')
for count, row in enumerate(csv_reader, 1):
hostlist.append(row[colm])
else:
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), csvfile)
return tuple(hostlist)
def create_ip_list(target_ip=["192.168.50.1/24"]):
only_ip_list = []
for ip_rage in target_ip:
for i in scan(ip_rage):
if i['hostname'] != ".":
scan_name = (i['hostname'])
else:
scan_name = (i['ip'])
#print(scan_name)
#print(port_open(address=scan_name))
if port_open(address=scan_name):
only_ip_list.append(scan_name)
return tuple(only_ip_list)
if __name__ == "__main__":
#if len(sys.argv) == 1:
ip_list = create_ip_list()
man_list = scan_csv(csvfile="hostname_manuel.csv")
output = {
"_meta": {
"hostvars": {
"scan_csv": {
"http_port": 123,
}
}
},
"network_scan": {
"hosts": ip_list,
"vars": {
"ansible_user": "jonnybravo",
"ansible_python_interpreter": "/usr/bin/python3",
"ansible_ssh_private_key_file": "/home/jonnybravo/.ssh/ansible-test"
}
},
"csv_scan": {
"hosts": man_list,
"vars":{
"ansible_user": "jonnybravo",
"ansible_python_interpreter": "/usr/bin/python3",
"ansible_ssh_private_key_file": "/home/jonnybravo/.ssh/ansible-test"
}
}
}
print(json.dumps(output,indent=4, sort_keys=True))
# elif len(sys.argv) == 2:
# print(sys.argv)

View File

@@ -0,0 +1,3 @@
hostname, info
dan-jam-01, keine,
ras-dan-01.local, keine,
1 hostname, info
2 dan-jam-01, keine,
3 ras-dan-01.local, keine,

View File

@@ -1,73 +0,0 @@
#! /usr/bin/env python3.12
import scapy.all as scapy
import json
import socket
def scan(ip):
arp_request = scapy.ARP(pdst=ip)
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast / arp_request
answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0]
results = []
for element in answered_list:
result = {"ip": element[1].psrc, "mac": element[1].hwsrc, 'hostname': socket.gethostbyaddr(element[1].psrc)[0]}
results.append(result)
return results
def test_port(address: str, dest_port: int) -> bool:
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
if sock.connect_ex((address, dest_port)) == 0:
return True
return False
except (OSError, ValueError):
return False
def create_ip_list(target_ip="192.168.50.1/24"):
only_ip_list = []
for i in scan(target_ip):
#print(test_port(address=i['ip'], dest_port=22))
if i['hostname'] != ".":
only_ip_list.append(i['hostname'])
else:
only_ip_list.append(i['ip'])
return tuple(only_ip_list)
def scan_csv(csv_file=str):
pass
if __name__ == "__main__":
ip_list = create_ip_list()
man_list = ["ras-dan-01.local", "dan-jam-01"]
output = {
"_meta": {
"hostvars": {
"webprod": {
"http_port": 123,
}
}
},
"network_scan": {
"hosts": ip_list,
"vars": {
"ansible_user": "jonnybravo",
"ansible_python_interpreter": "/usr/bin/python3",
"ansible_ssh_private_key_file": "/home/jonnybravo/.ssh/ansible-test"
}
},
"scan_csv": {
"hosts": man_list,
"vars":{
"ansible_user": "jonnybravo",
"ansible_python_interpreter": "/usr/bin/python3",
"ansible_ssh_private_key_file": "/home/jonnybravo/.ssh/ansible-test"
}
}
}
print(json.dumps(output,indent=4, sort_keys=True))