【问题标题】:IP switching using Python inside AWS Ubuntu EC2 instance在 AWS Ubuntu EC2 实例中使用 Python 进行 IP 切换
【发布时间】:2019-09-27 23:02:25
【问题描述】:

实际上,我有一些辅助私有 IP,附加到我的 ec2 实例,每个都与一个公共弹性 IP 相关联。我有一段 python 代码可以使用python-requests 执行一些 API 请求。在发送每个请求之前,我需要从已附加的 IP 列表中设置自定义源 IP。

尝试了下面的代码,但以错误结束:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('X.X.X.X', 20))

提前致谢

【问题讨论】:

  • 你得到什么错误信息?

标签: python-3.x amazon-web-services ubuntu amazon-ec2 python-requests


【解决方案1】:

弹性IP地址存在于1:1 NAT后面,所以需要绑定实例后面的本地IP地址。您可以要求元数据存储获取每个网络适配器的公共/本地 IP 地址。

大多数时候这样做非常简单:

import requests
import socket

metadata = "http://169.254.169.254/latest/meta-data/network/interfaces/macs/"

for mac_id in requests.get(metadata).text.split("\n"):
    local_ip = requests.get(metadata + mac_id + "local-ipv4s").text
    public_ip = requests.get(metadata + mac_id + "public-ipv4s").text
    print("{} has local IP of {} and public IP of {}".format(mac_id, local_ip, public_ip))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind((local_ip, 1234))

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2018-08-30
    • 2015-03-18
    • 1970-01-01
    • 2020-07-09
    • 2018-08-23
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多