[issue35164] socket.getfqdn and socket.gethostbyname fail on MacOS

2018-12-13 Thread James Crowther


James Crowther  added the comment:

Hi Ronald, I've replied to your comments below



>My gut feeling is that this is some issue with your system or environment.

I Doubt it, happens with another MacBook air which is literally out of the box, 
no mods.

>Some more questions:

>- Is this is a consistent problem, or only on some networks? 
All networks
>- Do you have any custom settings in the Networking preference pane related to 
>name resolution (extra search domains, DNS servers, ...)? 
No
>- Do the domains returned by the DHCP server actually exist?
Not sure
>- Likewise for the DNS servers
likewise not sure
>- Does the result of socket.gethostname() look sane? In particular, does this 
>include a domain name?
it is given a name that includes the ip address and the name of the router. 
>- The original message mentions: "and that the DHCP servers provides one ore 
>more domains to be useles for resolution.". What is meant by that? AFAIK the 
>DHCP server can only return 1 domain name, not a full DNS search list (or at 
>least not one that is used by most major platforms).
Not sure what was meant by this comment.

--

___
Python tracker 
<https://bugs.python.org/issue35164>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue35164] socket.getfqdn and socket.gethostbyname fail on MacOS

2018-11-10 Thread James Crowther


James Crowther  added the comment:

Hi guys, I am the OP for the stack overflow issue question that sparked this 
bug report. 


In response to Ned's question about configuration of the system:

MacOS 10.14.1
Installed x-code and command line tools
python versions used, varies, 3.5.3, 3.6 and 3.7.0 (sorry can't be more 
specific about 3.6 since I've used a lot. These python configurations have been 
both a bundled python env in blender, and also MacOS's native python 2.7.

So far they've all had the same issue, that being;

socket.gethostname() 

returns a value that seems to be set by the router/switch if 

scutil --set hostname somehostname 

has not been run. What Sorin mentioned on the stack overflow question that he 
didn't here (and I feel is important) is that ping and nslookup work with the 
expected hostname, i.e. the one the user can actually see by going to the 
system preferences and viewing it under the sharing section. Here it is called 
"Computer name", analogous to the same used on windows (which I might add has 
no such issues with hostnames being set to something other than the computer 
name unless a certain command is run).

So the real issue for us, is how come ping and nslookup will work fine with the 
macOS "computer name" but the socket module uses something else, seemingly the 
hostname and computer name are not or loosely connected on macOS perhaps. 

Ideally what we need here is a way to ensure that the user can input the 
computer name of a target machine on another system and that system resolve the 
ip address for the target machine. We can't currently use socket.gethostname 
for this on mac since it seems to require that the scutil --set hostname 
command has been run. Otherwise the hostname that is returned doesn't work with 
socket.gethostbyname(hostname).

Hope this helps, happy to clarify.

J.

--
nosy: +James Crowther

___
Python tracker 
<https://bugs.python.org/issue35164>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29705] socket.gethostbyname, getaddrinfo etc broken on MacOS 10.12

2017-03-02 Thread James Crowther

New submission from James Crowther:

Currently I can't use socket to resolve host names to IP addresses. This is 
something critical to mine as well as other applications that run over 
networks. 
When I attempt to do the following:

import socket
socket.getaddrinfo(hostname, None)

or 

socket.gethostbyname(hostname)

I get 

socket.gaierror: [Errno 8] nodename nor servename provided, or not known.

This works perfectly on both linux kubuntu 16.0. and windows 7,10. 

Seems that the introduction of Yosemite might be the point at which this broke 
by doing a simple google search for "macos socket.gethostbyname gaierror".

--
components: Library (Lib)
messages: 288840
nosy: James Crowther
priority: normal
severity: normal
status: open
title: socket.gethostbyname, getaddrinfo etc broken on MacOS 10.12
type: behavior
versions: Python 3.5

___
Python tracker 
<http://bugs.python.org/issue29705>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29705] socket.gethostbyname, getaddrinfo etc broken on MacOS 10.12

2017-03-02 Thread James Crowther

James Crowther added the comment:

Hi Ned, 
Doesn’t seem to matter, I can try my local host name given by;

socket.gethostname()

or I can try another host on the network, same result. 

If I do the exact same operation using the same python version on windows or 
linux, then I get the expected result from gethostbyname which is the ip 
address of the host. Also on macOS 10.6.8 this still works, using the same 
version of python.

Happy to give more details if you need.

James
> On 3 Mar 2017, at 11:27 am, Ned Deily  wrote:
> 
> 
> Ned Deily added the comment:
> 
> What value are you using for hostname?
> 
> --
> nosy: +ned.deily
> 
> ___
> Python tracker 
> <http://bugs.python.org/issue29705>
> ___

--

___
Python tracker 
<http://bugs.python.org/issue29705>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29705] socket.gethostbyname, getaddrinfo etc broken on MacOS 10.12

2017-03-02 Thread James Crowther

James Crowther added the comment:

Hi Ned, 
Currently running 10.12.3. and output is as follows

Jamess-MacBook-pro:crowdrender_repository jamesmac$ python3.5
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> hostname = socket.gethostname()
>>> socket.getaddrinfo(hostname, None)
Traceback (most recent call last):
  File "", line 1, in 
  File 
"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", 
line 732, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>> 

This is a commonly prescribed method of resolving the ip address of your own 
machine on a LAN, also if I try another machines hostname which is on the local 
network, I get the same result. 

As for the experiments you tried, these do work, but that is not what I want to 
use the socket library for, I want to query the IP address of hosts on the LAN, 
localhost is no use to me, its just the loop back address.

I have a windows machine on my network and its hostname is James-PC, if i do

socket.getaddrinfo(“James-PC”)

I get the same error. This works if I reboot the mac (the same one that is 
having the issues) into linux and run the exact same command. I get the 
expected output from getaddrinfo. 

So, how come this approach doesn’t work on my mac? Also why are others having 
the same issue with Yosemite and sierra, this is not just me that is reporting 
this odd behaviour too. I’ve seen it in other forums.

Kind Regards

James

> On 3 Mar 2017, at 11:41 am, Ned Deily  wrote:
> 
> 
> Ned Deily added the comment:
> 
> Sorry, I can't reproduce that behavior with my macOS 10.12, 10.11, or 10.10 
> systems if the hostname is a valid string including "localhost".  If the 
> string is empty or hostname is None, then I see Errno 8.
> 
> $ /usr/local/bin/python3.6
> Python 3.6.0 (v3.6.0:41df79263a11, Dec 22 2016, 17:23:13)
> [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import socket
>>>> hostname = 'python.org'
>>>> socket.getaddrinfo(hostname, None)
> [(, , 17, '', 
> ('23.253.135.79', 0)), (,  1>, 6, '', ('23.253.135.79', 0)), (, 
> , 17, '', ('2001:4802:7901::e60a:1375:0:6', 0, 0, 
> 0)), (, , 6, '', 
> ('2001:4802:7901::e60a:1375:0:6', 0, 0, 0))]
>>>> hostname = "localhost"
>>>> socket.getaddrinfo(hostname, None)
> [(, , 17, '', ('::1', 
> 0, 0, 0)), (, , 6, '', 
> ('::1', 0, 0, 0)), (, , 
> 17, '', ('127.0.0.1', 0)), (, 
> , 6, '', ('127.0.0.1', 0))]
>>>> hostname = ""
>>>> socket.getaddrinfo(hostname, None)
> Traceback (most recent call last):
>  File "", line 1, in 
>  File 
> "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py", 
> line 743, in getaddrinfo
>for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
> socket.gaierror: [Errno 8] nodename nor servname provided, or not known
> 
> Perhaps there is something different about your hostname configuration on 
> your Mac?  macOS has some unusual ways of configuring the hostname 
> resolutions.  I don't have time at the moment to investigate further.  But 
> Python's socket module interfaces tend to be very thin wrappers around the 
> underlying OS provided APIs.  Perhaps you could test with a small C program 
> that does the equivalent.
> 
> --
> 
> ___
> Python tracker 
> <http://bugs.python.org/issue29705>
> ___

--

___
Python tracker 
<http://bugs.python.org/issue29705>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29705] socket.gethostbyname, getaddrinfo etc broken on MacOS 10.12

2017-03-02 Thread James Crowther

James Crowther added the comment:

Hi Ned, 
Thats ok, thanks! I’m going to try it on another machine, its really 
strange, I’m wondering what I might have done on my mac to cause it to flake 
out like this. Will do some more testing with other macs running 10.12 and see 
if they have the same behaviour, by the way, thanks for running that last test 
as it shows that this call is actually working on some systems. I really need 
to know the reason why its not working on mine, I have about 120 users and need 
to be sure that they’re not going to have our next build break if we rely on 
this call. 

Thanks :D

James

> On 3 Mar 2017, at 1:45 pm, Ned Deily  wrote:
> 
> 
> Ned Deily added the comment:
> 
> James, I'm sorry I didn't show it but using socket.gethostname() as the 
> source of hostname works just fine, too.
> 
> import socket
>>>> hostname = socket.gethostname()
>>>> hostname
> 'harj.local'
>>>> socket.getaddrinfo(hostname, None)
> [(, , 17, '', 
> ('fe80::8d8:1de3:dfa:e34c%en1', 0, 0, 5)), (, 
> , 6, '', ('fe80::8d8:1de3:dfa:e34c%en1', 0, 0, 
> 5)), (, , 17, '', 
> ('10.0.1.7', 0)), (, , 
> 6, '', ('10.0.1.7', 0))]
> 
> I don't know what to tell you other than the behavior you are seeing is 
> almost certainly not a Python issue.  There are many other ways to explore 
> host names, like using the "host" command line utility or "netstat".  But 
> that is all beyond the scope of this bug tracker.  If you need more 
> assistance, perhaps ask on one of the StackExchange forums or Apple lists.  
> I'm going to close this issue; if you are able to isolate what appears to be 
> a Python issue here, please feel free to re-open this.  Good luck!
> 
> --
> resolution:  -> works for me
> stage:  -> resolved
> status: open -> closed
> 
> ___
> Python tracker 
> <http://bugs.python.org/issue29705>
> ___

--

___
Python tracker 
<http://bugs.python.org/issue29705>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com