[Python-bugs-list] [ python-Bugs-615472 ] socket.getfqdn() doesn't on Windows

noreply@sourceforge.net noreply@sourceforge.net
Mon, 30 Sep 2002 09:02:53 -0700


Bugs item #615472, was opened at 2002-09-27 08:32
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=615472&group_id=5470

Category: Python Library
>Group: 3rd Party
Status: Closed
Resolution: Wont Fix
Priority: 5
Submitted By: Robert Olson (olson)
Assigned to: Nobody/Anonymous (nobody)
Summary: socket.getfqdn() doesn't on Windows

Initial Comment:
On windows, socket.getfqdn() doesn't return a fully qualified 
name. Further, it returns the NETBIOS name (I think they call it 
that) of the computer, not a name that's useful for 
networking:

C:\>\Python22\python.exe
Python 
2.2.1 (#34, Apr  9 2002, 19:34:33) [MSC 32 bit (Intel)] on 
win32
Type "help", "copyright", "credits" or "license" for more 
information.
>>> import socket
>>> 
socket.getfqdn()
'lorax'

Python 2.2.1 (from 
python.org), Windows 2000.

--bob

----------------------------------------------------------------------

>Comment By: Tim Peters (tim_one)
Date: 2002-09-30 12:02

Message:
Logged In: YES 
user_id=31435

Changed group to "3rd Party", as Martin suggested.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2002-09-30 11:23

Message:
Logged In: YES 
user_id=21627

If you get your configuration via dhcp, the DHCP server
should provide you with your domain name as well. If it
doesn't, the DHCP server is misconfigured; ask your
administrator. Do you have any indication that any other
program on your system is capable of computing the domain
suffix you want to see?

The issue with properly resolving a remote system (assuming
'moonbeam' is remote) is a well-known (to me, atleast)
limitation of the Windows Socket library (winsock): if you
are requesting information on the local system, DNS is not
considered. DNS queries are only sent for remote systems.

I'll close this bug as third-party (MS, in this case); if
you later find that there is indeed a Python bug, please
make a new report.

----------------------------------------------------------------------

Comment By: Robert Olson (olson)
Date: 2002-09-30 08:51

Message:
Logged In: YES 
user_id=20112

This is the other thing that bugs me about this problem:

$ 
python
Python 2.1.1 (#2, Aug 23 2001, 10:41:44) 
[GCC 2.95.3-5 
(cygwin special)] on cygwin
Type "copyright", "credits" or "license" 
for more information.
>>> import socket
>>> 
socket.gethostbyaddr(socket.gethostbyname("only"))
('only', [], 
['140.221.10.174', '192.168.153.1', '192.168.43.1'])
>>> 
socket.gethostbyaddr(socket.gethostbyname("moonbeam"))
('moonbeam.mcs.anl.gov', 
[], ['140.221.9.223'])

It doesn't make sense that the first doesn't 
return the full name, while the second does.

--bob

----------------------------------------------------------------------

Comment By: Robert Olson (olson)
Date: 2002-09-30 08:01

Message:
Logged In: YES 
user_id=20112

This is win2k. The "full computer name" doesn't have the full domain; and 
there isn't a primary domain suffix, so that may be what you mean by 
misconfigured. 

However, when I get IP and DNS information via 
DHCP, I would not expect to have to manually configure the computer 
name each time I use the machine in a differnet place (this is what DHCP 
is for). A DNS lookup on my IP address should give me the full information. 
Sigh, I suspect I may be up against a windows limitation perhaps.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2002-09-30 03:44

Message:
Logged In: YES 
user_id=21627

It works fine for me, on an XP system. What Windows version?

In "computer properties/computer name/Change", what do you
see as "complete computer name"? In "more", what is the
"primary domain suffix"? (I only have a German installation,
so I'm uncertain how this reads in an English installation)
I still suspect your machine is misconfigured.

----------------------------------------------------------------------

Comment By: Robert Olson (olson)
Date: 2002-09-29 19:32

Message:
Logged In: YES 
user_id=20112

Is this what you're looking for?

$ python
Python 2.1.1 (#2, Aug 
23 2001, 10:41:44) 
[GCC 2.95.3-5 (cygwin special)] on 
cygwin
Type "copyright", "credits" or "license" for more 
information.
>>> import socket
>>> 
socket.getfqdn()
'only'
>>> 
socket.gethostname()
'only'
>>> 
socket.gethostbyaddr(socket.gethostname())
('only', [], 
['140.221.10.174', '192.168.153.1', '192.168.43.1'])

(different 
machine & python, same behavior; the one I used before is now on a 
network where it doesn't have a real name).

I've seen this on all the 
Windows machines I've used; it seems like Windows refuses to let the 
DNS-based name come through, if it already thinks it knows the name 
based on the Netbios name of the machine.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2002-09-29 18:23

Message:
Logged In: YES 
user_id=21627

This is not true; getfqdn returns a fully qualified name
even on Windows. If it doesn't do that on your system, this
reason is different than just being Windows.

Can you please report the outcome of the following calls?

socket.gethostname()
name = _
gethostbyaddr(name)


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=615472&group_id=5470