如何在python中获取当前EC2实例的公有ip地址?如何在python中获取当前ec2实例的公共ip?
回答
import urllib.request
urllib.request.urlopen("http://169.254.169.254/latest/meta-data/public-ipv4").read()
你的答案相当简短,也许你可以解释它是如何工作的。这是亚马逊ec2具体还是什么? – CrazyCasta 2014-08-31 06:07:06
@CrazyCastaL请看这里:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html – 2014-08-31 06:07:36
“local-ipv4”元数据将包含实例的私有IP地址这仅在AWS网络中有用。公共IP地址可以使用“public-ipv4”。 – garnaat 2014-08-31 12:55:32
如果您已经使用boto
,你也可以使用boto.utils.get_instance_metadata
功能。这会调用元数据服务器,收集所有元数据并将其作为Python字典返回。它也处理重试。
def console(cmd):
p = Popen(cmd,shell=True,stdout=PIPE)
out,err = p.communicate()
dir_list = out.split('\n')
return (dir_list)
ip = console("http://169.254.169.254/latest/meta-data/public-ipv4")
print ip
import requests
ip = requests.get("http://169.254.169.254/latest/meta-data/public-ipv4").content
下面的方法将返回公共IP或您的EC2实例的弹性IP地址(注意:如果EIP地址与您的EC2实例相关联,那么公共IP地址实际上是释放)。
这对于Django项目特别有用,因为您可以在settings.py脚本中将IP地址附加到ALLOWED_HOSTS。
安装PyCurl
pip install pycurl
Python 3中
import pycurl from io import BytesIO # Determine Public IP address of EC2 instance buffer = BytesIO() c = pycurl.Curl() c.setopt(c.URL, 'checkip.amazonaws.com') c.setopt(c.WRITEDATA, buffer) c.perform() c.close() body = buffer.getvalue() # Body is a byte string, encoded. Decode it first. print (body.decode('iso-8859-1').strip())
的Python 2
import pycurl from StringIO import StringIO buffer = StringIO() c = pycurl.Curl() c.setopt(c.URL, 'checkip.amazonaws.com') c.setopt(c.WRITEDATA, buffer) c.perform() c.close() body = buffer.getvalue() # Body is a string in some encoding. # In Python 2, we can print it without knowing what the encoding is. print (body)
欢呼。
- 1. 在当前EC2实例上获取公共IP地址
- 2. AWS Cloud Formation - 如何获取公共ip地址的ec2实例
- 3. 使用公共ip启动ec2实例
- 4. 如何获取EC2启动实例请求上的公共IP地址?
- 5. 更改EC2实例的公共IP地址弹性IP地址
- 6. 从实例ID确定公共Amazone EC2实例IP地址
- 7. 从lambda中的SNS确定EC2实例公共IP
- 8. 在Golang获取公共IP
- 9. 从JAVA API获取Amazon EC2实例的公共DNS
- 10. ec2-import-instance生成一个没有公共IP的实例
- 11. 使用scala获取当前机器的公共IP地址
- 12. 无法通过公共IP访问EC2实例
- 13. 无法将EC2实例公共IP分配给Mosquitto MQTT代理
- 14. 如何获取当前的NHibernate.Cfg.Configuration实例
- 15. 如何获得公共IP
- 16. 在javascript中获取公共ip地址
- 17. 远程获取公共IP
- 18. EC2 t2.micro实例没有公共DNS
- 19. EC2公共实例无法访问
- 20. 如何从AppDomain获取当前实例?
- 21. 通过公共IP访问亚马逊EC2获取超时
- 22. 如何在php中获取客户端的公共ip
- 23. 如何以编程方式获取实例的公共dns?
- 24. 在Saltstack公式中检索另一个EC2实例的公有IP
- 25. 如何获得第二个EC2实例的公共DNS地址,而一审
- 26. 如何在公共IP
- 27. 无法通过公共IP访问EC2 linux实例上的网站
- 28. 将EC2实例注册到未使用公共IP的ECS群集
- 29. 通过公共ip的亚马逊EC2实例无法正常工作
- 30. 通过API获取我的公共IP
[本页](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html)解释了如何使用HTTP GET检索实例的IP地址。 – 2014-08-31 05:43:57