如何使用python扫描本地局域网ip占用?
Published on Aug. 22, 2023, 12:14 p.m.
你可以使用 Python 的 socket 和 subprocess 模块来扫描本地局域网中 IP 的使用情况。
以下是一个可能的代码示例,它使用 ping 命令扫描本地网络中的 IP 地址:
import socket
import subprocess
# 获取主机名
host = socket.gethostname()
# 获取本地 IP 地址
ip = socket.gethostbyname(host)
prefix = '.'.join(ip.split('.')[:-1]) + '.'
# 扫描 1-255 范围内的 IP
for i in range(1, 256):
# 构造 IP 地址
test_ip = prefix + str(i)
# 使用 ping 命令测试 IP 是否可达
ping = subprocess.Popen(['ping', '-c', '1', '-W', '1', test_ip], stdout=subprocess.PIPE)
ping.wait()
if ping.returncode == 0:
print(f'{test_ip} is up!')
else:
print(f'{test_ip} is down.')
该代码使用 socket.gethostname() 获取本地主机名,再使用 socket.gethostbyname() 获取本地 IP 地址。然后,它使用循环构造可能的 IP 地址并使用 subprocess.Popen() 运行 ping 命令来检查 IP 是否可达。
注意,这种方法仅适用于本地局域网中的计算机,对于外部网络或具有防火墙保护的计算机,可能会产生错误或不准确的结果。