• 护网IP去重,去白名单


    使用的时候,数据库里都是封禁的

    今天完善了一下这两个文件自己创建一下

    txt只要名字对就行

    1. import csv
    2. from tkinter import *
    3. from tkinter import ttk
    4. from tkinter.messagebox import showinfo, askyesno
    5. # 创建CSV库
    6. def create_csv():
    7. try:
    8. with open('ip_database.csv', 'w', newline='') as file:
    9. writer = csv.writer(file)
    10. writer.writerow(['IP'])
    11. result_text.insert(END, "CSV 数据库创建成功!\n")
    12. except PermissionError:
    13. result_text.insert(END, "权限被拒绝:创建CSV数据库失败\n")
    14. # 从文件中读取IP列表并查询
    15. def read_ip_list():
    16. ip_list = []
    17. try:
    18. with open('ip_list.txt', 'r') as file:
    19. for line in file:
    20. ip = line.strip()
    21. if not search_ip(ip):
    22. ip_list.append(ip)
    23. print(ip)
    24. store_ip_list(ip_list)
    25. result_text.insert(END, "IP列表处理成功!\n")
    26. except FileNotFoundError:
    27. result_text.insert(END, "找不到文件(ip_list.txt): 读取IP列表失败.请创建\n")
    28. except PermissionError:
    29. result_text.insert(END, "拒绝权限:读取IP列表失败.\n")
    30. # 查询IP是否存在于库中
    31. def search_ip(ip):
    32. try:
    33. with open('ip_database.csv', 'r') as file:
    34. reader = csv.reader(file)
    35. next(reader) # 跳过标题行
    36. for row in reader:
    37. if row[0] == ip:
    38. return True
    39. return False
    40. except FileNotFoundError:
    41. result_text.insert(END, "文件未找到:搜索IP失败.\n")
    42. except PermissionError:
    43. result_text.insert(END, "拒绝权限: 搜索IP失败.\n")
    44. # 存储IP列表到库中
    45. def store_ip_list(ip_list):
    46. try:
    47. with open('ip_database.csv', 'a', newline='') as file:
    48. writer = csv.writer(file)
    49. for ip in ip_list:
    50. writer.writerow([ip])
    51. result_text.insert(END, ip+"\n")
    52. result_text.insert(END, "未存在列表已添加!\n")
    53. result_text.insert(END, "列表处理!\n")
    54. except PermissionError:
    55. result_text.insert(END, "拒绝许可:存储IP列表失败.\n")
    56. # 单个IP查询
    57. def search_single_ip():
    58. ip = entry.get()
    59. if search_ip(ip):
    60. result_text.insert(END, f"IP {ip} 已存在\n")
    61. else:
    62. result_text.insert(END, f"IP {ip} 不在\n")
    63. # 添加单个IP到数据库
    64. def add_single_ip():
    65. ip = entry.get()
    66. if not search_ip(ip):
    67. try:
    68. with open('ip_database.csv', 'a', newline='') as file:
    69. writer = csv.writer(file)
    70. writer.writerow([ip])
    71. result_text.insert(END, f"IP {ip} 已添加到数据库\n")
    72. except PermissionError:
    73. result_text.insert(END, "拒绝权限: 添加IP失败.\n")
    74. else:
    75. showinfo("Error", f"IP {ip} 已存在于数据库中")
    76. # 删除单个IP
    77. def delete_single_ip():
    78. ip = entry.get()
    79. if search_ip(ip):
    80. confirmation = askyesno("Confirmation", f"您确定要删除{ip}?")
    81. if confirmation:
    82. try:
    83. with open('ip_database.csv', 'r') as file:
    84. lines = file.readlines()
    85. with open('ip_database.csv', 'w') as file:
    86. for line in lines:
    87. if line.strip() != ip:
    88. file.write(line)
    89. result_text.insert(END, f"IP {ip} 已从数据库中删除.\n")
    90. except FileNotFoundError:
    91. result_text.insert(END, "文件未找到: 删除IP失败.\n")
    92. except PermissionError:
    93. result_text.insert(END, "拒绝权限:删除IP失败.\n")
    94. else:
    95. showinfo("Error", f"IP {ip} 数据库中不存在")
    96. # 创建图形化界面
    97. window = Tk()
    98. window.title("IP 去重 工具")
    99. window.geometry("800x800")
    100. # 创建标题标签
    101. title_label = ttk.Label(window, text="IP 去重 工具", font=("Helvetica", 16))
    102. title_label.pack(pady=10)
    103. # 创建按钮框架
    104. button_frame = Frame(window)
    105. button_frame.pack(pady=10)
    106. # 创建数据库按钮
    107. #create_button = ttk.Button(button_frame, text="Create CSV Database", command=create_csv)
    108. #create_button.grid(row=0, column=0, padx=5)
    109. read_button = ttk.Button(button_frame, text="读取ip_list.txt文件查询", command=read_ip_list)
    110. read_button.grid(row=0, column=1, padx=5)
    111. # 创建输入框和按钮框架
    112. input_frame = Frame(window)
    113. input_frame.pack(pady=10)
    114. entry = ttk.Entry(input_frame)
    115. entry.grid(row=0, column=0, padx=5)
    116. search_button = ttk.Button(input_frame, text="单个IP查询", command=search_single_ip)
    117. search_button.grid(row=0, column=1, padx=5)
    118. delete_button = ttk.Button(input_frame, text="删除该IP", command=delete_single_ip)
    119. delete_button.grid(row=0, column=2, padx=5)
    120. add_button = ttk.Button(input_frame, text="添加到数据库", command=add_single_ip)
    121. add_button.grid(row=0, column=3, padx=5)
    122. # 创建结果文本框
    123. result_text = Text(window, height=80, width=60)
    124. result_text.pack(pady=100)
    125. window.mainloop()

  • 相关阅读:
    2023陇剑杯
    软考高级:DNS欺骗相关知识和例题
    DSPE-PEG-Hydrazide DSPE-PEG-HZ 水溶性磷脂-聚乙二醇-酰肼
    央国企信创改造难在何处?先行建设国产身份域管可少走弯路
    Marked.js让您的文档编辑更加轻松自如!
    三维模型相机视角投影详细介绍及python程序解析
    电子元器件企业面临缺货涨价,SRM协同系统助力企业采购数字化智慧升级
    upload-labs通关
    C语言中的内存池和内存管理技术是什么?
    如何记录分析你的炼丹流程—可视化神器Wandb使用笔记【1】
  • 原文地址:https://blog.csdn.net/qq_38236017/article/details/132831801