Python获取当前服务器的公网IP

因为需要将dns的域名指向改为当前服务器,因此需要获取当服务器的公网IP,要在 Python 中获取当前服务器的公网 IP,你可以使用第三方服务提供的 API。这里提供两种常用的方法:

方法一:使用 ipify API

复制代码
import requests

def get_public_ip():
    try:
        response = requests.get('https://api.ipify.org?format=json')
        response.raise_for_status()
        data = response.json()
        return data['ip']
    except requests.exceptions.RequestException as e:
        print(f"获取公网 IP 失败:{e}")
        return None

public_ip = get_public_ip()
if public_ip:
    print(f"当前服务器的公网 IP 是:{public_ip}")
else:
    print("无法获取公网 IP")

方法二:使用 httpbin.org API

复制代码
import requests

def get_public_ip():
    try:
        response = requests.get('http://httpbin.org/ip')
        response.raise_for_status()
        data = response.json()
        return data['origin']
    except requests.exceptions.RequestException as e:
        print(f"获取公网 IP 失败:{e}")
        return None

public_ip = get_public_ip()
if public_ip:
    print(f"当前服务器的公网 IP 是:{public_ip}")
else:
    print("无法获取公网 IP")

这两种方法都使用了 requests 库发送 HTTP 请求到第三方 API 服务,以获取服务器的公网 IP。第一种方法使用了 ipify API,第二种方法使用了 httpbin.org API。

请注意,这些方法依赖于第三方服务,因此需要确保服务器可以访问这些 API 地址。如果服务器位于防火墙或代理之后,可能需要进行额外的网络配置。

在使用这些方法之前,请确保已经安装了 requests 库。你可以使用以下命令安装:

复制代码
pip install requests

如果你的服务器无法直接访问互联网,或者你希望使用其他方式获取公网 IP,可以考虑以下替代方案:

  1. 使用命令行工具,如 curl 或 wget,访问类似的 IP 查询服务。

  2. 如果服务器位于云平台(如 AWS、Google Cloud 或 Azure),可以使用平台提供的 API 或元数据服务获取公网 IP。

  3. 如果你有可靠的外部服务器,可以设置一个定期更新 IP 的脚本,将当前服务器的公网 IP 发送到该外部服务器,然后从外部服务器获取 IP。

选择适合你的方案时,请考虑服务器的网络环境、安全要求和可用的资源。

相关推荐
Cry丶12 小时前
ubuntu安装vsftpd
服务器·网络·ubuntu
木子欢儿14 小时前
openconnect Linux客户端安装 以及开机自启和登录
linux·运维·服务器
外收内放14 小时前
面向对象高级(实战案例)
开发语言·python·学习
..Dauntless..15 小时前
【Linux】文件系统(一)
linux·运维·服务器
专业程序开发源15 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟15 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境15 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
九零HTTP15 小时前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
fanruitian16 小时前
python else用法
开发语言·python
SHENGWEI胜为16 小时前
交换机端口显示正常,终端却获取不到 IP 地址?从 DHCP 流程定位故障
服务器·网络·测试工具·缓存·通信工程