3 # Utilities for determining the Windows operating system version remotely.
6 from samba
import srvsvc
13 PLATFORM_NT5
= 3 # Windows 2000
15 def platform_name(platform_type
):
17 platform_names
= { PLATFORM_UNKNOWN
: "Unknown",
18 PLATFORM_WIN9X
: "Windows 9x",
19 PLATFORM_NT4
: "Windows NT",
20 PLATFORM_NT5
: "Windows 2000" }
22 if platform_names
.has_key(platform_type
):
23 return platform_names
[platform_type
]
27 def platform_type(info101
):
28 """Determine the operating system type from a SRV_INFO_101."""
30 if info101
['major_version'] == 4 and info101
['minor_version'] == 0:
33 if info101
['major_version'] == 5 and info101
['minor_version'] == 0:
36 return PLATFORM_UNKNOWN
38 def is_domain_controller(info101
):
39 """Return true if the server_type field from a SRV_INFO_101
40 indicates a domain controller."""
41 return info101
['server_type'] & srvsvc
.SV_TYPE_DOMAIN_CTRL
44 info
= srvsvc
.netservergetinfo("\\\\%s" % name
, 101)
45 return platform_type(info
)
47 if __name__
== "__main__":
49 if len(sys
.argv
) != 2:
50 print "Usage: osver.py server"
52 info
= srvsvc
.netservergetinfo("\\\\%s" % sys
.argv
[1], 101)
53 print "platform type = %d" % platform_type(info
)
54 if is_domain_controller(info
):
55 print "%s is a domain controller" % sys
.argv
[1]