Getting external IP address
steve at REMOVEME.cybersource.com.au
Mon Mar 5 09:49:58 CET 2007
I have a PC behind a firewall, and I'm trying to programmatically
determine the IP address visible from outside the firewall.
If I do this:
>>> import socket
('localhost.localdomain', ['localhost'], ['127.0.0.1'])
I get my internal IP address, which is not what I want.
Other tricks, like parsing the output of os.system('/sbin/ifconfig eth0')
also give me my internal IP address.
I found this post on comp.lang.python a few years ago:
which seems like it _should_ do what I want, but it doesn't: I get an
>>> from httplib import HTTPConnection
>>> from xml.dom.ext.reader.Sax import FromXmlStream
>>> conn = HTTPConnection('xml.showmyip.com')
>>> conn.request('GET', '/')
>>> doc = FromXmlStream(conn.getresponse())
>>> print doc.getElementsByTagName('ip').firstChild.data
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/UserList.py", line 28, in __getitem__
def __getitem__(self, i): return self.data[i]
IndexError: list index out of range
I don't know how to fix it so that it works.
Can anyone help me fix that code snippet, or suggest another (better) way
to get the externally visible IP address?
More information about the Python-list