determine the IP address visible from outside the firewall.
If I do this:
'127.0.0.1'>>import socket
socket.gethostbyname(socket.gethostname())
('localhost.localdomain', ['localhost'], ['127.0.0.1'])>>socket.gethostbyname_ex(socket.gethostname())
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/pyt...ch/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[i]
IndexError: list index out of range
I don't know how to fix it so that it works.>>conn.close()
Can anyone help me fix that code snippet, or suggest another (better) way
to get the externally visible IP address?
--
Steven D'Aprano