如何在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