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。

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

相关推荐
布莱克60517 分钟前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
Dumbness17 分钟前
不传 day 参数,座位图显示全空:用 Python 标准库手写 Web 框架,请求到业务代码前的 5 个细节
后端·python
databook1 小时前
收上来一堆 Excel,怎么保证没改错
python·数据分析
2601_967987372 小时前
Python 教程:默认字典(defaultdict)全维度深度指南
python·性能优化·数据处理·collections·defaultdict
鱼听禅2 小时前
Ubuntu安装YOLOv8进行菌落识别训练
linux·python·yolo·ubuntu
测试界的小码农2 小时前
【Linux 命令实战(04):文件内容查看,掌握 cat、less、head、tail】
linux·服务器·less
ZhengEnCi3 小时前
Agent 查不出代码 Bug 怎么办:一份带时间戳的调试日志与读日志排查流程
python·ai编程
每月一号准时摆烂3 小时前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记
威哥爱编程3 小时前
模拟面试智能体开发实战 05:给面试官接上题库和检索,题目结构化、大纲可溯源,AI 不再凭印象出题
python·agent·harmonyos
威哥爱编程3 小时前
模拟面试智能体开发实战 06:答得好怎么追问、答得错怎么点破,追问引擎让面试官会深挖会纠错
python·agent·harmonyos