黄岐做网站,个人网站 flash,中美关系最新消息,深圳设计网站费用一、实现样式
批量IP与端口中间用“,”分割#xff0c;点击Telnet进行测试#xff0c;前提是你电脑安装了telnet客户端#xff0c;Clear按钮用来清空文本框。
二、核心点
1、使用Tkinter来制作桌面GUI页面 2、使用telnetlib模块测试telnet端口
三、困难点
1、测试结果…一、实现样式
批量IP与端口中间用“,”分割点击Telnet进行测试前提是你电脑安装了telnet客户端Clear按钮用来清空文本框。
二、核心点
1、使用Tkinter来制作桌面GUI页面 2、使用telnetlib模块测试telnet端口
三、困难点
1、测试结果陆续输出到文本框里面去最开始使用重定向将print打印结果输出到文本框当时结果会一下子全出现在页面上如果数据量大就会导致程序一直无响应半天结果不会出来用户体验感异常不好这里采用text.insert()将结果输出到文本框使用延迟sleep文本框更新的方式将数据一条一条的输出到页面上。 output_text.insert(INSERT,f{host} {port}端口开放 \n)time.sleep(0.1)output_text.update()2、文本框键盘无法输入最开始想到是文本框直接 disabled只读但是这样的话text.insert()就无法将结果输出到文本框里面去这里采用禁止键盘输入
# 键盘无法输入
output_text.bind(Key,lambda event:break)四、完整代码
from tkinter import *
import telnetlib
import timeroot Tk()
root.title(telnet批量测试)
# root.iconbitmap(telnet.ico)
root.geometry(800x540)
root.resizable(False, False)
# 保存端口不通的ip:ports
notopenport []def telnet(host, port):# redirect_stdout_to_tkinter(output_text)try:# timeout单位stelnetlib.Telnet(hosthost, portport, timeout1)output_text.insert(INSERT,f{host} {port}端口开放 \n)time.sleep(0.1)output_text.update()output_text.focus_force()# print(f{host} {port} 端口开放) except:output_text.insert(INSERT,f{host} {port}端口未开放 \n)notopenport.append(f{host}:{port})time.sleep(0.1)output_text.update()output_text.focus_force()
# 测试端口
def for_port():hosts ipInput.get().split(,)port_list portsInput.get().split(,)# print(需要测试的端口)# print(hosts)output_text.insert(INSERT,----------开始进行端口测试--------- \n) for host in hosts:for port in port_list:telnet(host, port)output_text.insert(END,------------端口测试完成----------- \n) output_text.insert(END,不通的ip地址与端口为 \n)output_text.insert(END,notopenport )def clear():output_text.delete(1.0, END)# 布局框架
fr Frame(root).pack(anchor nw)
# ip输入框
ipLab Label(fr,textIP Address:).place(x30,y30)
ipInput Entry(fr,width70)
ipInput.place(x110,y32)
# 端口输入框
portsLab Label(fr,textPorts:).place(x30,y70)
portsInput Entry(fr,width70)
portsInput.place(x110,y72)
# 按钮
telnetButton Button(fr,textTelnet,commandfor_port).place(x110,y128)
clearButton Button(fr,textClear,commandclear).place(x170,y128)fr1 Frame(root,width72,height200,bd4).place(x110,y160)
output_text Text(fr1,width72)
output_text.place(x110,y160)
# 键盘无法输入
output_text.bind(Key,lambda event:break)
# 滑块绑定
scroll Scrollbar(fr1)
scroll.pack(sideRIGHT,fillY)
# 两个控件关联
scroll.config(commandoutput_text.yview)
output_text.config(yscrollcommandscroll.set)# redirect_stdout_to_tkinter(output_text)mainloop()