暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python设置网卡自己封装的Internet类 WMI

捷创源科技 2022-04-25
775

点击上方蓝字 ● 关注捷创源科技

简介:
下面是自己用Python做项目过程中,自己封装的Internet类,可以设置本机IP地址、默认网关、子网掩码和DNS,也可以获取本机IP地址、默认网关、子网掩码、DNS和本机MAC信息。


myPyDoInternet.py

    """=== coding: UTF8 ==="""
    import uuid


    import wmi


    # IP地址
    arrIPAddresses = ['192.168.30.79']
    # 子网掩码
    arrSubnetMasks = ['255.255.255.0']
    # 默认网关
    arrDefaultGateways = ['192.168.30.1']
    arrGatewayCostMetrics = [1]
    # DNS列表
    arrDNS = ['114.114.114.114', '114.114.115.115']




    class InternetDef(object):
    intReboot = 0


    """初始化函数"""
    def __init__(self, arrIPAddressesServer, arrSubnetMasksServer,
    arrDefaultGatewaysServer, arrGatewayCostMetricsServer, arrDNSServers,
    wmiService, colNicConfigs, objNicConfig):
    self.arrIPAddressesServer = arrIPAddressesServer # 本机IP地址
    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" # 本机MAC地址


    """启动WMI服务函数"""
    def startWmiService(self):
    # 创建WMI服务对象
    self.wmiService = wmi.WMI()
    # 调用网络适配器配置
    self.colNicConfigs = self.wmiService.Win32_NetworkAdapterConfiguration(IPEnabled=True)


    if len(self.colNicConfigs) < 1:
    print("没有找到可用的网络适配器!")
    return False
    else:
    self.objNicConfig = self.colNicConfigs[0]
    return True


    """设置IP服务函数"""
    def setIPServers(self):
    returnValue = self.objNicConfig.EnableStatic(IPAddress=self.arrIPAddressesServer,
    SubnetMask=self.arrSubnetMasksServer)
    if returnValue[0] == 0:
    print("修改IP成功")
    elif returnValue[0] == 1:
    print("修改IP成功")
    InternetDef.intReboot += 1
    else:
    print("修改IP失败")
    exit()


    """设置默认网关服务函数"""
    def setGatewaysServer(self):
    returnValue = self.objNicConfig.SetGateways(DefaultIPGateway=self.arrDefaultGatewaysServer,
    GatewayCostMetric=self.arrGatewayCostMetricsServer)
    if returnValue[0] == 0:
    print("修改网关成功")
    elif returnValue[0] == 1:
    print("修改网关成功")
    InternetDef.intReboot += 1
    else:
    print("修改网关失败")
    exit()


    """设置DNS服务函数"""
    def setDNSServers(self):
    returnValue = self.objNicConfig.SetDNSServerSearchOrder(DNSServerSearchOrder=self.arrDNSServers)


    if returnValue[0] == 0:
    print("修改DNS成功")
    elif returnValue[0] == 1:
    print("修改DNS成功")
    InternetDef.intReboot += 1
    else:
    print("修改DNS失败")
    exit()


    """设置Internet服务函数"""
    def setInternetServer(self):
    if self.startWmiService(): # 启动WMI服务,如果返回True,则设置Internet
    self.setIPServers()
    self.setGatewaysServer()
    self.setDNSServers()
    else:
    exit()


    """获取IP信息函数"""
    def getIPInfo(self):
    print("本机IP:\n", self.objNicConfig.IPAddress[0])


    """获取子网掩码信息函数"""
    def getSubnetInfo(self):
    print("子网掩码:\n", self.objNicConfig.IPSubnet[0])


    """获取网关信息函数"""
    def getGatewaysInfo(self):
    print("默认网关:\n", self.objNicConfig.DefaultIPGateway[0])


    """获取DNS信息函数"""
    def getDNSInfo(self):
    print("本机DNS:\n" + '\n'.join(self.objNicConfig.DNSServerSearchOrder))


    """获取本机MAC函数"""
    def getMACAddress(self):
    mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
    strTempMac = ":".join([mac[e:e + 2] for e in range(0, 11, 2)])
    self.strMACAddress = strTempMac.replace(':', '-').upper()
    print("本机MAC:\n", self.strMACAddress)


    """获取Internet所有信息函数"""
    def getInternetInfo(self):
    if InternetDef.intReboot > 0:
    print("需要重新启动计算机!")


    if self.startWmiService(): # 重新启动WMI服务,如果返回True,则获取internet信息
    self.getIPInfo()
    self.getSubnetInfo()
    self.getGatewaysInfo()
    self.getDNSInfo()
    self.getMACAddress()
    else:
    exit()




    """
    ========================================
    主函数功能测试
    ========================================
    """
    if __name__ == '__main__':
    # 定义internet对象
    internet1 = InternetDef(arrIPAddresses, arrSubnetMasks, arrDefaultGateways,
    arrGatewayCostMetrics, arrDNS, None, None, None)
    # 设置Internet
    internet1.setInternetServer()
    # 获取internet信息
    internet1.getInternetInfo()
    # Python程序运行结束后不关闭控制台命令
    input("\n请按任意键退出。。。")


    """
    # 定义internet对象
    internet2 = InternetDef([""], [""], [""], [1], ["", ""], None, None, None)
    # 获取internet信息
    internet2.getInternetInfo()
    # Python程序运行结束后不关闭控制台命令
    input("\n请按任意键退出。。。")
        """


    关注上面微信公众号“捷创源科技”,每天获取技术干货,让我们一起成长!

    文章转载自捷创源科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论