一:获取本机IP、子网掩码、网关IP
获取本机公网 IP 地址
import requests
ip = requests.get('https://api.ipify.org').text
获取本机公网 IP 地址 (通过socket)
在某些情况下,计算机可能无法访问外部网络,从而无法连接到指定的 DNS 服务器以获取其 IP 地址。此外,如果计算机位于内部网络中,则获取到的可能是内部 IP 地址而非公网 IP 地址。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #创建一个基于 UDP 协议的 socket 对象。
s.connect(('8.8.8.8', 80)) #通过 socket 连接到谷歌的 DNS 服务器(IP 地址为 8.8.8.8,端口号为 80)。
ip = s.getsockname()[0] #获取该 socket 的本地地址,也就是当前计算机的 IP 地址,并将其赋值给变量 `ip`。
可以直接使用socket.gethostbyname 获取 主机IP地址
hostname = socket.gethostname() #主机名
ip_address = socket.gethostbyname(hostname) #ip地址
获取子网掩码
linux 系统通过ip addr 可以grep 获取到的ip 来获取子网掩码是多少位
ip addr | grep {ip} |grep -v grep
获取网关IP
通过获取到的掩码位数来获取到固定的网络号的前多少位
例如:172.18.11.11/24
掩码位为24 则取 172.18.11 作为过滤条件 ip_prefix 调用命令
ip route |grep default |grep {ip_prefix} |