S
Steven D'Aprano
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:
('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:
http://mail.python.org/pipermail/python-list/2003-March/192495.html
which seems like it _should_ do what I want, but it doesn't: I get an
exception.
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/UserList.py", line 28, in __getitem__
def __getitem__(self, i): return self.data
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?
determine the IP address visible from outside the firewall.
If I do this:
('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:
http://mail.python.org/pipermail/python-list/2003-March/192495.html
which seems like it _should_ do what I want, but it doesn't: I get an
exception.
Traceback (most recent call last):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')[0].firstChild.data
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/UserList.py", line 28, in __getitem__
def __getitem__(self, i): return self.data
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?