因为需要将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,可以考虑以下替代方案:
-
使用命令行工具,如
curl
或wget
,访问类似的 IP 查询服务。 -
如果服务器位于云平台(如 AWS、Google Cloud 或 Azure),可以使用平台提供的 API 或元数据服务获取公网 IP。
-
如果你有可靠的外部服务器,可以设置一个定期更新 IP 的脚本,将当前服务器的公网 IP 发送到该外部服务器,然后从外部服务器获取 IP。
选择适合你的方案时,请考虑服务器的网络环境、安全要求和可用的资源。