📅  最后修改于: 2023-12-03 14:49:50.666000             🧑  作者: Mango
在计算机网络中,了解计算机的重要网络信息非常重要。Python提供了各种模块和库来获取这些信息。
IP地址是计算机在网络上的唯一标识符。Python的sockets
模块提供了IP地址的获取方法。以下是获取本机IP地址的示例代码:
import socket
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
print(f"本机IP地址:{ip_address}")
输出结果:
本机IP地址:192.168.1.100
网关是连接不同网络的节点,通过它进行数据交换。Python的subprocess
模块提供了获取网关的命令行指令,以下是获取网关的示例代码:
import subprocess
result = subprocess.run(["route", "-n"], capture_output=True, text=True)
output_lines = result.stdout.splitlines()
gateway_line = [line for line in output_lines if "UG" in line]
gateway_ip = gateway_line[0].split()[1]
print(f"网关IP地址:{gateway_ip}")
输出结果:
网关IP地址:192.168.1.1
子网掩码用于确定IP地址的网络部分与主机部分。Python的netifaces
模块提供了获取子网掩码的方法,以下是获取子网掩码的示例代码:
import netifaces
interface_name = netifaces.gateways()["default"][netifaces.AF_INET][1]
interfaces = netifaces.interfaces()
for interface in interfaces:
if interface == interface_name:
interface_details = netifaces.ifaddresses(interface)
netmask = interface_details[netifaces.AF_INET][0]["netmask"]
print(f"子网掩码:{netmask}")
输出结果:
子网掩码:255.255.255.0
DNS服务器用于将域名解析成IP地址。Python的socket
模块提供了获取DNS服务器的方法,以下是获取DNS服务器的示例代码:
import socket
hostname = socket.gethostname()
dns_servers = []
for address in socket.getaddrinfo(hostname, None):
if address[0] == socket.AF_INET and address[1] == socket.SOCK_STREAM:
ip_address = address[4][0]
dns_server = subprocess.run(["nslookup", "-sil", "-debug", ip_address], capture_output=True, text=True)
dns_servers.append(dns_server.stdout.split("\n")[4].split()[-1])
print(f"DNS 服务器:{dns_servers}")
输出结果:
DNS 服务器:['192.168.1.1']
以上示例代码可供参考,开发者可根据具体情况进行修改和扩展。
参考文献: