python脚本多线程探测指定网段中存活的主机,并探测指定端口是否开启
#!/usr/bin/env python
import telnetlib
import threading
import queue
import nmap
def get_ip_list(host_segment_list):
ip_list = []
for host_segment in host_segment_list:
nmScan = nmap.PortScanner()
ret = nmScan.scan(hosts=host_segment, arguments='-sP')
ip_list += list(ret['scan'])
print(ip_list)
print(ip_list)
print(len(ip_list))
return ip_list
def get_ip_status(ip):
server = telnetlib.Telnet()
with open('open_port.txt','a+') as open_f, open('close_port.txt','a+') as close_f:
for port in [9100,9559]:
try:
server.open(ip, port)
print(ip + ':' + str(port),file=open_f)
except Exception as err:
print(ip + ':' + str(port),file=close_f)
finally:
server.close()
def check_open(q):
try:
while True:
ip = q.get_nowait()
get_ip_status(ip)
except queue.Empty as e:
pass
if __name__ == '__main__':
host_segment = ['10.172.41.0/24','10.172.72.0/24','10.172.80.0/24','10.172.34.0/24']
ip_list = get_ip_list(host_segment)
q = queue.Queue()
for ip in ip_list:
q.put(ip)
threads = []
for i in range(10):
t = threading.Thread(target=check_open, args=(q,))
t.start()
threads.append(t)
for t in threads:
t.join()