权限
- 一定要以管理员权限运行
- 本案例修改的是首选以太网、次选无线网的修改
import uuid
import wmi
arrIPAddresses = ['172.16.102.33']
arrSubnetMasks = ['255.255.255.0']
arrDefaultGateways = ['172.16.102.1']
arrGatewayCostMetrics = [1]
arrDNS = ['114.114.114.114', '114.114.115.115']
class InternetDef(object):
"""python设置本机IP地址、子网掩码、DNS,获取本机IP地址、子网掩码、DNS、MAC"""
intReboot = 0
def __init__(self, arrIPAddressesServer, arrSubnetMasksServer,
arrDefaultGatewaysServer, arrGatewayCostMetricsServer, arrDNSServers,
wmiService, colNicConfigs, objNicConfig):
"""初始化"""
self.arrIPAddressesServer = arrIPAddressesServer
self.arrSubnetMasksServer = arrSubnetMasksServer
self.arrDefaultGatewaysServer = arrDefaultGatewaysServer
self.arrGatewayCostMetricsServer = arrGatewayCostMetricsServer
self.arrDNSServers = arrDNSServers
self.wmiService = wmiService
self.colNicConfigs = colNicConfigs
self.objNicConfig = objNicConfig
self.strMACAddress = "00-00-00-00-00-00"
def start_wmi_service(self):
"""启动WMI服务"""
self.wmiService = wmi.WMI()
self.colNicConfigs = self.wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=True)
print(self.colNicConfigs)
if len(self.colNicConfigs) < 1:
print("没有找到可用的网络适配器!")
return False
else:
nic_config_list = [v for v in self.colNicConfigs if 'Family' in v.Caption]
if not nic_config_list:
nic_config_list = [v for v in self.colNicConfigs if 'Wi-Fi' in v.Caption]
self.objNicConfig = nic_config_list[0] if nic_config_list else None
if not self.objNicConfig:
print('没有需要的网络')
return False
return True
def set_ip_servers(self):
"""设置IP服务"""
return_value = self.objNicConfig.EnableStatic(IPAddress=self.arrIPAddressesServer,
SubnetMask=self.arrSubnetMasksServer)
if return_value[0] == 0:
print("修改IP成功")
elif return_value[0] == 1:
print("修改IP成功")
InternetDef.intReboot += 1
else:
print("修改IP失败")
exit()
def set_gateways_server(self):
"""设置默认网关服务"""
return_value = self.objNicConfig.SetGateways(DefaultIPGateway=self.arrDefaultGatewaysServer,
GatewayCostMetric=self.arrGatewayCostMetricsServer)
if return_value[0] == 0:
print("修改网关成功")
elif return_value[0] == 1:
print("修改网关成功")
InternetDef.intReboot += 1
else:
print("修改网关失败")
exit()
def set_dns_servers(self):
"""设置DNS服务"""
return_value = self.objNicConfig.SetDNSServerSearchOrder(DNSServerSearchOrder=self.arrDNSServers)
if return_value[0] == 0:
print("修改DNS成功")
elif return_value[0] == 1:
print("修改DNS成功")
InternetDef.intReboot += 1
else:
print("修改DNS失败")
exit()
def set_internet_server(self):
"""设置Internet服务"""
if self.start_wmi_service():
self.set_ip_servers()
self.set_gateways_server()
self.set_dns_servers()
else:
exit()
def get_ip_info(self):
"""获取IP信息"""
print("本机IP:\n", self.objNicConfig.IPAddress[0])
def get_subnet_info(self):
"""获取子网掩码信息"""
print("子网掩码:\n", self.objNicConfig.IPSubnet[0])
def get_gateways_info(self):
"""获取网关信息"""
print("默认网关:\n", self.objNicConfig.DefaultIPGateway[0])
def get_dns_info(self):
"""获取DNS信息"""
print("本机DNS:\n" + '\n'.join(self.objNicConfig.DNSServerSearchOrder))
def get_mac_address(self):
"""获取本机MAC信息"""
mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
temp_mac_str = ":".join([mac[e:e + 2] for e in range(0, 11, 2)])
self.strMACAddress = temp_mac_str.replace(':', '-').upper()
print("本机MAC:\n", self.strMACAddress)
def get_internet_info(self):
"""获取Internet所有信息函数"""
if InternetDef.intReboot > 0:
print("需要重新启动计算机!")
if self.start_wmi_service():
self.get_ip_info()
self.get_subnet_info()
self.get_gateways_info()
self.get_dns_info()
self.get_mac_address()
else:
exit()
if __name__ == '__main__':
internet1 = InternetDef(arrIPAddresses, arrSubnetMasks, arrDefaultGateways,
arrGatewayCostMetrics, arrDNS, None, None, None)
internet1.set_internet_server()
internet1.get_internet_info()
input("\n请按任意键退出。。。")
"""
# 定义internet对象
internet2 = InternetDef([""], [""], [""], [1], ["", ""], None, None, None)
# 获取internet信息
internet2.getInternetInfo()
# Python程序运行结束后不关闭控制台命令
input("\n请按任意键退出。。。")
"""