📜  使用Python查看计算机的重要网络信息(1)

📅  最后修改于: 2023-12-03 14:49:50.666000             🧑  作者: Mango

使用Python查看计算机的重要网络信息

在计算机网络中,了解计算机的重要网络信息非常重要。Python提供了各种模块和库来获取这些信息。

1. IP地址

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
2. 网关

网关是连接不同网络的节点,通过它进行数据交换。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
3. 子网掩码

子网掩码用于确定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
4. DNS服务器

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']

以上示例代码可供参考,开发者可根据具体情况进行修改和扩展。

参考文献:

  • https://docs.python.org/3/library/socket.html
  • https://docs.python.org/3/library/subprocess.html
  • https://pypi.org/project/netifaces/