脑子笨,口算子网掩码有点慢,于是用python3 写了个子网掩码计算器,可以算IPV4和IPV6,支持192.168.1.1/24和192.168.1.1/255.255.255.0两种掩码方式。
脚本内容如下:
from IPy import IP
import tkinter
def ipmask(strs=&39;&39;):
try:
ip = IP(strs, make_net=True)
info = {}
info[&39;IP/MASK&39;] = str(ip)
info[&39;MASK&39;] = str(IP(ip).strNormal(2).split(&39;/&39;)[1])
info[&39;LENGTH&39;] = ip.len()
info[&39;START&39;] = str(ip[0])
info[&39;END&39;] = str(ip[-1])
ret = info
except:
ip = &39;&39;
ret = &39;格式有误&39;
return ret, ip
class MY_GUI():
def __init__(self, init_window_name):
self.init_window_name = init_window_name
def set_init_window(self):
self.init_window_name.title(&34;IP子网掩码计算器&34;)
self.init_window_name.geometry(&39;500x610+500+100&39;)
self.init_window_name.attributes(&34;-alpha&34;, 0.95)
self.ip_label = tkinter.Label(self.init_window_name, text=&34;IP/MASK&34;)
self.ip_label.pack(fill=tkinter.X, side=tkinter.TOP)
self.ip_text = tkinter.Entry(self.init_window_name)
self.ip_text.pack(fill=tkinter.X, side=tkinter.TOP, )
self.button = tkinter.Button(self.init_window_name, text=&34;计算&34;, width=13, command=self.trans)
self.button.pack(fill=tkinter.Y, side=tkinter.TOP)
self.result_data_Text = tkinter.Text(self.init_window_name)
self.scroll = tkinter.Scrollbar()
self.scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
self.scroll.config(command=self.result_data_Text.yview())
self.result_data_Text.config(yscrollcommand=self.scroll.set)
self.result_data_Text.pack(fill=tkinter.Y, side=tkinter.TOP, expand=&39;yes&39;)
功能函数
def trans(self):
self.result_data_Text.delete(1.0, tkinter.END)
strs = self.ip_text.get()
info, ip = ipmask(strs)
if &39;MASK&39; in info:
self.result_data_Text.insert(tkinter.END,&39;\n&39;)
for i in info:
self.result_data_Text.insert(tkinter.END, &39;{:<10}{}\n&39;.format(i, info[i]))
self.result_data_Text.insert(tkinter.END, &39;\n{}\n\n&39;.format(&39;=&39; * 50))
else:
self.result_data_Text.insert(tkinter.END, info)
if ip:
if ip.len() > 65536:
self.result_data_Text.insert(tkinter.END, &39;列表过大\n&39;)
else:
for i in ip:
self.result_data_Text.insert(tkinter.END, str(i) + &39;\n&39;)
def gui_start():
init_window = tkinter.Tk()
ZMJ_PORTAL = MY_GUI(init_window)
ZMJ_PORTAL.set_init_window()
init_window.mainloop()
gui_start()