有没有办法扫描 python 中的整个网络范围 (192.168.0./24) 并将数据输出到文本文件?
Is there a way to scan an entire network range (192.168.0./24) in python and have the data outputted to a text file?
我对 python 比较陌生,所以我的知识不是很多。我正在使用 python-nmap 来扫描网络范围,但我最头疼的问题是将结果输出到文本文件。
这是我目前所拥有的
import nmap
ip = '192.168.20.1'
port = 80
nmap = nmap.PortScanner()
result = nmap.scan(ip, str(port))
port_status = (result['scan'][ip]['tcp'][port]['state'])
print(f"Port {port} is {port_status} on {ip}")
with open('nmap.txt','w') as file:
file.write(f"Port {port} is {port_status} on {ip}")
虽然这仅适用于单个 ip,但我正在尝试扫描整个网络范围,例如 192.168.20.0/24。
当我将 ip 变量设置为“192.168.20.0/24”时,我收到以下错误代码:
Traceback (most recent call last):
File "c:/Users/john/Desktop/Python/Test.py", line 8, in <module>
port_status = (result['scan'][ip]['tcp'][port]['state'])
KeyError: '192.168.20.0/24'
我觉得有一个非常简单的解决方法,我觉得发布这个很愚蠢,但非常感谢您的帮助。
谢谢
使用 CIDR 表示法,您将获得多个结果,而您的第 8-11 行只能处理一个结果。您需要一个循环来处理您的 python-nmap 结果。
import nmap
ips = '192.168.20.0/24'
port = 80
nmap = nmap.PortScanner()
nmap.scan(ips, port)
with open('nmap.txt','w') as file:
for host in nmap.all_hosts():
port_state = nmap[host]['tcp'][port]['state']
print(f"Port {port} is {port_state} on {host}")
file.write(f"Port {port} is {port_state} on {host}")
我对 python 比较陌生,所以我的知识不是很多。我正在使用 python-nmap 来扫描网络范围,但我最头疼的问题是将结果输出到文本文件。 这是我目前所拥有的
import nmap
ip = '192.168.20.1'
port = 80
nmap = nmap.PortScanner()
result = nmap.scan(ip, str(port))
port_status = (result['scan'][ip]['tcp'][port]['state'])
print(f"Port {port} is {port_status} on {ip}")
with open('nmap.txt','w') as file:
file.write(f"Port {port} is {port_status} on {ip}")
虽然这仅适用于单个 ip,但我正在尝试扫描整个网络范围,例如 192.168.20.0/24。 当我将 ip 变量设置为“192.168.20.0/24”时,我收到以下错误代码:
Traceback (most recent call last):
File "c:/Users/john/Desktop/Python/Test.py", line 8, in <module>
port_status = (result['scan'][ip]['tcp'][port]['state'])
KeyError: '192.168.20.0/24'
我觉得有一个非常简单的解决方法,我觉得发布这个很愚蠢,但非常感谢您的帮助。 谢谢
使用 CIDR 表示法,您将获得多个结果,而您的第 8-11 行只能处理一个结果。您需要一个循环来处理您的 python-nmap 结果。
import nmap
ips = '192.168.20.0/24'
port = 80
nmap = nmap.PortScanner()
nmap.scan(ips, port)
with open('nmap.txt','w') as file:
for host in nmap.all_hosts():
port_state = nmap[host]['tcp'][port]['state']
print(f"Port {port} is {port_state} on {host}")
file.write(f"Port {port} is {port_state} on {host}")