python实现自动更换ip的方法
本文实例讲述了python实现自动更换ip的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/envpython #-*-encoding:gb2312-*- #Filename:IP.py importsitecustomize import_winreg importConfigParser fromctypesimport* print'正在进行网络适配器检测,请稍候…' print netCfgInstanceID=None hkey=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,\ r'System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}') keyInfo=_winreg.QueryInfoKey(hkey) #寻找网卡对应的适配器名称netCfgInstanceID forindexinrange(keyInfo[0]): hSubKeyName=_winreg.EnumKey(hkey,index) hSubKey=_winreg.OpenKey(hkey,hSubKeyName) try: hNdiInfKey=_winreg.OpenKey(hSubKey,r'Ndi\Interfaces') lowerRange=_winreg.QueryValueEx(hNdiInfKey,'LowerRange') #检查是否是以太网 iflowerRange[0]=='ethernet': driverDesc=_winreg.QueryValueEx(hSubKey,'DriverDesc')[0] print'检测到网络适配器名:',driverDesc netCfgInstanceID=_winreg.QueryValueEx(hSubKey,'NetCfgInstanceID')[0] print'检测到网络适配器ID:',netCfgInstanceID ifnetCfgInstanceID==None: print'没有找到网络适配器,程序退出' exit() break _winreg.CloseKey(hNdiInfKey) exceptWindowsError: printr'Message:NoNdi\InterfacesKey' #循环结束,目前只提供修改一个网卡IP的功能 _winreg.CloseKey(hSubKey) _winreg.CloseKey(hkey) #通过修改注册表设置IP strKeyName='System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\'+netCfgInstanceID print'网络适配器的注册表地址是:\n',strKeyName hkey=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,\ strKeyName,\ 0,\ _winreg.KEY_WRITE) config=ConfigParser.ConfigParser() print print'正在打开IP.ini配置文件…' config.readfp(open('IP.ini')) IPAddress=config.get("school","IPAddress") SubnetMask=config.get("school","SubnetMask") GateWay=config.get("school","GateWay") DNSServer1=config.get("school","DNSServer1") DNSServer2=config.get("school","DNSServer2") DNSServer=[DNSServer1,DNSServer2] print'配置文件内设定的信息如下,请核对:' print print'IP地址:',IPAddress print'子关掩码:',SubnetMask print'默认网关:',GateWay print'主DNS服务器:',DNSServer1 print'次DNS服务器:',DNSServer2 print res=raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:') ifstr(res)=='1': try: _winreg.SetValueEx(hkey,'EnableDHCP',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'IPAddress',None,_winreg.REG_MULTI_SZ,[IPAddress]) _winreg.SetValueEx(hkey,'SubnetMask',None,_winreg.REG_MULTI_SZ,[SubnetMask]) _winreg.SetValueEx(hkey,'DefaultGateway',None,_winreg.REG_MULTI_SZ,[GateWay]) _winreg.SetValueEx(hkey,'NameServer',None,_winreg.REG_SZ,','.join(DNSServer)) exceptWindowsError: print'SetIPError' exit() _winreg.CloseKey(hkey) print'切换成功!重置网络后即可生效' elifstr(res)=='2': try: _winreg.SetValueEx(hkey,'EnableDHCP',None,_winreg.REG_DWORD,0x00000001) _winreg.SetValueEx(hkey,'T1',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'T2',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'NameServer',None,_winreg.REG_SZ,None) _winreg.SetValueEx(hkey,'DhcpConnForceBroadcastFlag',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'Lease',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'LeaseObtainedTime',None,_winreg.REG_DWORD,0x00000000) _winreg.SetValueEx(hkey,'LeaseTerminatesTime',None,_winreg.REG_DWORD,0x00000000) exceptWindowsError: print'SetIPError' exit() _winreg.CloseKey(hkey) print'切换成功!重置网络后即可生效' else: print'用户手动取消,程序退出' exit('')
希望本文所述对大家的Python程序设计有所帮助。