护网IP去重,去白名单

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

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

txt只要名字对就行

import csv
from tkinter import *
from tkinter import ttk
from tkinter.messagebox import showinfo, askyesno

# 创建CSV库
def create_csv():
    try:
        with open('ip_database.csv', 'w', newline='') as file:
            writer = csv.writer(file)
            writer.writerow(['IP'])
        result_text.insert(END, "CSV 数据库创建成功!\n")
    except PermissionError:
        result_text.insert(END, "权限被拒绝:创建CSV数据库失败\n")

# 从文件中读取IP列表并查询
def read_ip_list():
    ip_list = []
    try:
        with open('ip_list.txt', 'r') as file:
            for line in file:
                ip = line.strip()
                if not search_ip(ip):
                    ip_list.append(ip)
                    print(ip)
        store_ip_list(ip_list)
        result_text.insert(END, "IP列表处理成功!\n")
    except FileNotFoundError:
        result_text.insert(END, "找不到文件(ip_list.txt): 读取IP列表失败.请创建\n")
    except PermissionError:
        result_text.insert(END, "拒绝权限:读取IP列表失败.\n")


# 查询IP是否存在于库中
def search_ip(ip):
    try:
        with open('ip_database.csv', 'r') as file:
            reader = csv.reader(file)
            next(reader)  # 跳过标题行
            for row in reader:
                if row[0] == ip:
                    return True
        return False
    except FileNotFoundError:
        result_text.insert(END, "文件未找到:搜索IP失败.\n")
    except PermissionError:
        result_text.insert(END, "拒绝权限: 搜索IP失败.\n")

# 存储IP列表到库中
def store_ip_list(ip_list):
    try:
        with open('ip_database.csv', 'a', newline='') as file:
            writer = csv.writer(file)
            for ip in ip_list:
                writer.writerow([ip])
                result_text.insert(END, ip+"\n")
            result_text.insert(END, "未存在列表已添加!\n")
        result_text.insert(END, "列表处理!\n")
    except PermissionError:
        result_text.insert(END, "拒绝许可:存储IP列表失败.\n")

# 单个IP查询
def search_single_ip():
    ip = entry.get()
    if search_ip(ip):
        result_text.insert(END, f"IP {ip} 已存在\n")
    else:
        result_text.insert(END, f"IP {ip} 不在\n")

# 添加单个IP到数据库
def add_single_ip():
    ip = entry.get()
    if not search_ip(ip):
        try:
            with open('ip_database.csv', 'a', newline='') as file:
                writer = csv.writer(file)
                writer.writerow([ip])
            result_text.insert(END, f"IP {ip} 已添加到数据库\n")
        except PermissionError:
            result_text.insert(END, "拒绝权限: 添加IP失败.\n")
    else:
        showinfo("Error", f"IP {ip} 已存在于数据库中")

# 删除单个IP
def delete_single_ip():
    ip = entry.get()
    if search_ip(ip):
        confirmation = askyesno("Confirmation", f"您确定要删除{ip}?")
        if confirmation:
            try:
                with open('ip_database.csv', 'r') as file:
                    lines = file.readlines()
                with open('ip_database.csv', 'w') as file:
                    for line in lines:
                        if line.strip() != ip:
                            file.write(line)
                result_text.insert(END, f"IP {ip} 已从数据库中删除.\n")
            except FileNotFoundError:
                result_text.insert(END, "文件未找到: 删除IP失败.\n")
            except PermissionError:
                result_text.insert(END, "拒绝权限:删除IP失败.\n")
    else:
        showinfo("Error", f"IP {ip} 数据库中不存在")

# 创建图形化界面
window = Tk()
window.title("IP 去重 工具")
window.geometry("800x800")

# 创建标题标签
title_label = ttk.Label(window, text="IP 去重 工具", font=("Helvetica", 16))
title_label.pack(pady=10)

# 创建按钮框架
button_frame = Frame(window)
button_frame.pack(pady=10)
# 创建数据库按钮
#create_button = ttk.Button(button_frame, text="Create CSV Database", command=create_csv)
#create_button.grid(row=0, column=0, padx=5)

read_button = ttk.Button(button_frame, text="读取ip_list.txt文件查询", command=read_ip_list)
read_button.grid(row=0, column=1, padx=5)


# 创建输入框和按钮框架
input_frame = Frame(window)
input_frame.pack(pady=10)

entry = ttk.Entry(input_frame)
entry.grid(row=0, column=0, padx=5)

search_button = ttk.Button(input_frame, text="单个IP查询", command=search_single_ip)
search_button.grid(row=0, column=1, padx=5)

delete_button = ttk.Button(input_frame, text="删除该IP", command=delete_single_ip)
delete_button.grid(row=0, column=2, padx=5)

add_button = ttk.Button(input_frame, text="添加到数据库", command=add_single_ip)
add_button.grid(row=0, column=3, padx=5)
# 创建结果文本框
result_text = Text(window, height=80, width=60)
result_text.pack(pady=100)

window.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值