在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例常用Python方法 → 修改本地DNS的方法

修改本地DNS的方法

常用Python方法

下载此实例
  • 开发语言:Python
  • 实例大小:6.46KB
  • 下载次数:6
  • 浏览次数:77
  • 发布时间:2021-12-19
  • 实例类别:常用Python方法
  • 发 布 人:wangweibin
  • 文件格式:.py
  • 所需积分:2
 相关标签: dns 本地 方法 修改

实例介绍

【实例简介】

修改本地DNS的可执行文件,使用管理员权限打开

【实例截图】

from clipboard

【核心代码】

# -*- coding: UTF8 -*- import os import re import wmi import ctypes import sys

STD_OUTPUT_HANDLE = -11  # Windows CMD命令行 字体颜色定义 text colors FOREGROUND_DARKGREEN = 0x02 # dark green. FOREGROUND_RED = 0x0c # red. FOREGROUND_GREEN = 0x0a # green. FOREGROUND_BLUE = 0x09 # blue. FOREGROUND_DARKRED = 0x04 # dark red.   # reset white def resetcolor():
    set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) # 暗绿色 def darkgreen(mess):
    set_cmd_text_color(FOREGROUND_DARKGREEN)
    sys.stdout.write(mess)
    resetcolor() # 暗红色 def darkred(mess):
    set_cmd_text_color(FOREGROUND_DARKRED)
    sys.stdout.write(mess)
    resetcolor() # get handle std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) def set_cmd_text_color(color, handle=std_out_handle):
    bl = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bl def runcmd(cmd): # 执行cmd命令  tmp = os.popen(cmd)
    res = tmp.read() # 要用read()方法读取后才是文本对象  tmp.close() # 需将对象关闭  pattern = re.compile('. :$', re.M)
    ip_type = pattern.findall(res)
    result = [item.strip() for item in res.split("\n") if  item.strip() != "" and (item in ip_type or "123.125.97.254" in item) or (
                          item in ip_type or "114.247.39.112" in item)]
    ip = str(result).replace('[', '').replace(']', '') return ip def checkip(hostip): # 检查ip是否正确  pat = re.compile(r'([0-9]{1,3})\.')
    r = re.findall(pat, hostip   ".") if len(r) == 4 and len([x for x in r if int(x) >= 0 and int(x) <= 255]) == 4: return True  else: return False   def moddns(ip):
    wmis = wmi.WMI() # Windows管理规范  col = wmis.Win32_NetworkAdapterConfiguration(IPEnabled=True) # 遍历可用网络适配器数  if len(col) < 1:
        print("没有找到可用的网络适配器")
        exit()
    num = 0  adns = [ip] # 需要修改的DNS  while num < len(col):
        obj = col[num] if obj.Description.find("Virtual") == -1 and obj.Description.find("VPN") == -1: # 排除虚拟机  # print(obj)  # 打印网卡信息(网卡名称、路径、网关、IP地址、DNS、物理地址等信息)  rtv = obj.SetDNSServerSearchOrder(DNSServerSearchOrder=adns) # DNS赋值  # print(obj.DNSServerSearchOrder)  # 打印DNS信息  if rtv[0] == 0:
                os.system("ipconfig/flushdns")
                print("---------------------------------------------")
                print("以下为修改DNS成功后解析<epay.10010.com>结果,请注意检查核对")
                print("---------------------------------------------")
                darkgreen(runcmd("nslookup epay.10010.com"))
                darkgreen(obj.Description)
                darkgreen(u'修改DNS成功\n') # 打印网卡修改DNS成功  else:
                darkred(obj.Description)
                darkred(u'修改DNS失败\n') # 打印网卡修改DNS失败  num  = 1   def dhcpdns():
    wmis = wmi.WMI() # Windows管理规范  col = wmis.Win32_NetworkAdapterConfiguration(IPEnabled=True) # 遍历可用网络适配器数  if len(col) < 1:
        print("没有找到可用的网络适配器")
        exit()
    num = 0  while num < len(col):
        obj = col[num] if obj.Description.find("Virtual") == -1 and obj.Description.find("VPN") == -1: # 排除虚拟机  # print(obj)  # 打印网卡信息(网卡名称、路径、网关、IP地址、DNS、物理地址等信息)  rtv = obj.SetDNSServerSearchOrder() # print(obj.DNSServerSearchOrder)  # 打印DNS信息  if rtv[0] == 0:
                os.system("ipconfig/flushdns")
                print("---------------------------------------------")
                print("以下为修改DNS成功后解析<epay.10010.com>结果,请注意检查核对")
                print("---------------------------------------------")
                darkgreen(runcmd("nslookup epay.10010.com"))
                darkgreen(obj.Description)
                darkgreen(u'自动获取dns成功\n') # 打印网卡修改DNS成功  else:
                darkred(obj.Description)
                darkred(u'自动获取dns失败\n') # 打印网卡修改DNS失败  num  = 1   while True:
    print("---------------------------------------------")
    print("注意:修改DNS时,请先断开VPN,且以管理员身份运行")
    print("---------------------------------------------")
    print("-----请输入0/1/2/3/4-----\n"  "0、解析当前DNS\n"  "1、自动修改西红门dns\n"  "2、自动获取\n"  "3、手动修改西红门或硅谷dns\n"  "4、退出")
    i = input("请输入:\n") if i == '0':
        os.system("ipconfig/flushdns")
        print("---------------------------------------------")
        print("以下为解析<epay.10010.com>结果,请注意检查核对")
        print("---------------------------------------------")
        print(runcmd("nslookup epay.10010.com")) elif i == '1':
        print("自动修改西红门DNS地址:222.88.49.150")
        dns = "222.88.49.150"  moddns(dns) # 自动修改西红门DNS  elif i == '2':
        print("自动获取DNS,默认为硅谷")
        dhcpdns() # 自动获取DNS,默认为硅谷  elif i == '3':
        dns = input("请输入西红门或硅谷DNS地址:\n"  "西红门:24.154.1.4222.172.200.68(云南)、222.88.49.150(河南)\n"  "硅谷:202.106.0.20(北京)、219.150.32.132(天津)\n") while True: if checkip(dns):
                moddns(dns) # 手动修改西红门或硅谷DNS  break  else:
                print("-----------------------")
                print("请注意检查输入DNS是否正确")
                print("-----------------------")
                dns = input("请输入西红门或硅谷DNS地址:\n"  "西红门:24.154.1.4222.172.200.68(云南)、222.88.49.150(河南)\n"  "硅谷:202.106.0.20(北京)、219.150.32.132(天津)\n") elif i == '4':
        quit() else:
        print("请重新输入!\n")

标签: dns 本地 方法 修改

实例下载地址

修改本地DNS的方法

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警