Strangely enough, I've shut down my machine, went to sleep, then started
working... socket.gethostbyname(socket.gethostname()) started resolving
correctly. :S  Go figure.

On Thu, Apr 2, 2015 at 4:39 AM Lukáš Doktor <[email protected]> wrote:

> Btw from documentation:
>
> If you want to know the current machine’s IP address, you may want to
> use gethostbyname(gethostname()). This operation assumes that there is a
> valid address-to-host mapping for the host, and the assumption does not
> always hold.
>
> Note: gethostname() doesn’t always return the fully qualified domain
> name; use getfqdn() (see above).
>
> I also found that when you mess with /etc/hosts, gethostname() might
> return that result instead. Can you review it's content? Anyway to me it
> looks like a clear bug. It's advised in documentation and widely used.
>
> Regards,
> Lukáš
>
> Dne 2.4.2015 v 09:13 Lukáš Doktor napsal(a):
> > Hello Lucas,
> >
> > I (quickly) searched for the bug in bugzilla and found only info about
> > qpid-tools moving from gethostbyname() to getaddrinfo():
> > https://bugzilla.redhat.com/show_bug.cgi?id=489470
> >
> > Google search showed this:
> >
> > import socket
> > [i[4][0] for i in socket.getaddrinfo(socket.gethostname(), None)]
> >
> > then it's just a matter of good condition to find useful address and
> > return it. It works fine on F20, can you give it a try on F22? Although
> > can you please send us the link to bugzilla where you reported this
> > issue? I'm avid for details...
> >
> > Regards,
> > Lukáš
> >
> > PS: I'd rather use bash tool to obtain IP address then relying on
> > external, publicly available address.
> >
> >
> > Dne 2.4.2015 v 03:05 Lucas Meneghel Rodrigues napsal(a):
> >> Hello good friends,
> >>
> >> I've installed Fedora 22 on a new work laptop today and started to do my
> >> usual setup to get things going.
> >>
> >> I've realized that virt-test is not working on Fedora, because the good
> >> ol' trick of using
> >>
> >> socket.gethostbyname(socket.gethostname())
> >>
> >> Is not working for F22, as it returns some bogus value, such as
> >> 92.242.140.67.
> >>
> >> I've been thinking of solutions, but the only one I could find that
> >> would possibly work in other hosts does require a connection to a
> >> network resource of some sort, such as 'redhat.com' (see below).
> >>
> >> Now, this is not quite ideal, so I'm writing this e-mail to see if any
> >> of you has a good idea that we could use.
> >>
> >> Or maybe this is some bug in Fedora 22 that is yet to be fixed. Anyway,
> >> some food for thought.
> >>
> >> Cheers,
> >>
> >> Lucas
> >>
> >>  From 0e04529d57ece9dedfe9e428deb95eb6d6b687da Mon Sep 17 00:00:00 2001
> >> From: Lucas Meneghel Rodrigues <[email protected]>
> >> Date: Wed, 1 Apr 2015 21:35:58 -0300
> >> Subject: [PATCH] virttest.virt_vm: Alternate method for locating local
> >> machine
> >>   IP
> >>
> >> Sometimes, socket.gethostbyname(socket.gethostname()) just doesn't
> >> cut it, as I found it to be the case in my fresh Fedora 22 install.
> >>
> >> One proposal of fixing this would be this fairly unorthodox procedure,
> >> which is to establish a socket, connect to an internet address and
> >> check the socket address afterwards. This only works if we have
> >> an internet connection, though.
> >>   n
> >> Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
> >> ---
> >>   virttest/virt_vm.py | 5 +++--
> >>   1 file changed, 3 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/virttest/virt_vm.py b/virttest/virt_vm.py
> >> index 5ebf6be..1933940 100644
> >> --- a/virttest/virt_vm.py
> >> +++ b/virttest/virt_vm.py
> >> @@ -642,8 +642,9 @@ class BaseVM(object):
> >>           self.ip_version = self.params.get("ip_version",
> "ipv4").lower()
> >>           # TODO: Determine port redirection in use w/o checking nettype
> >>           if nic.nettype not in ['bridge', 'macvtap']:
> >> -            hostname = socket.gethostname()
> >> -            return socket.gethostbyname(hostname)
> >> +            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> >> +            s.connect(('redhat.com', 0))
> >> +            return socket.gethostbyname(s.getsockname()[0])
> >>           if not nic.has_key('mac') and self.params.get('vm_type') ==
> >> 'libvirt':
> >>               # Look it up from xml
> >>               nic.mac = self.get_virsh_mac_address(index)
> >> --
> >> 2.3.4
> >>
> >
>
> _______________________________________________
> Virt-test-devel mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/virt-test-devel
>
_______________________________________________
Virt-test-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-test-devel

Reply via email to