2016-10-31 7 views
0

Прежде всего это мой первый вопрос на этом сайте, поэтому я могу сделать некоторые основные ошибки, извиниться заранее. В любом случае я попытался создать графический интерфейс для telnet, и я использовал python3 в качестве языка программирования. Однако я хотел сделать непрерывное соединение, к сожалению, я не смог получить какой-либо вывод, пока не остановил программу (tn.write (b «exit \ n»)). Я открыт для всех видов обратной связи (например, вы должны использовать сокеты или так ...) любая информация, которую вы даете, будет оценена по достоинству. Ps: Я только пытался подключить локальный хост до сих пор, и я только заполнил кнопку подключения. Ps2: Как-то мне даже не удалось полностью подогнать код.Попытка сделать telnet gui с telnetlib

from tkinter import * 
import tkinter.messagebox 
import getpass 
import sys 
import telnetlib 



def main(): 

    root= Tk() 

    def tel_net(): 

     username = entry1.get() 
     pw = entry2.get() 
     host_ip= entry3.get()   

     HOST = host_ip 
     user = username 
     password = pw 

     tn = telnetlib.Telnet(HOST) 

     tn.read_until(b"login: ") 
     tn.write(user.encode('ascii') + b"\n") 
     if password: 
      tn.read_until(b"Password: ") 
      tn.write(password.encode('ascii') + b"\n") 

     tn.write(b"ls\n") 
     tn.write(b"exit\n") 
     print(tn.read_all().decode('ascii') 

    def printconnect(): 

     print("connected") 
     tel_net()  

     tkinter.messagebox.showinfo("telnet", "connected") 

    def printdisconnect(): 
     print("disconnected") 
     tn = telnetlib.Telnet(HOST) 
     tn.close(HOST)  

     tkinter.messagebox.showinfo("telnet","disconnected") 
    def quitwindow(): 
     answer = tkinter.messagebox.askquestion("telnet","Do you want to quit ?") 
     if answer == "yes": 
      root.destroy() 

    button1 = Button(root, text="Connect", command=printconnect, fg="green") 
    button2 = Button(root, text="Disconnect", command=printdisconnect, fg="red") 
    button3 = Button(root, text="Exit", command=quitwindow, fg="purple") 


    button1.grid(row=3, column=0, sticky = E) 
    button2.grid(row=3, column=1, sticky = E) 
    button3.grid(row=3, column=2, sticky = E) 



    label1 = Label(root, text="Username") 
    label2 = Label(root, text= "Password") 
    label3 = Label(root, text="Host ip") 



    entry1 = Entry(root) 
    entry2 = Entry(root) 
    entry3 = Entry(root) 
    entry2.config(show="*"); 

    label1.grid(row=0, column=0, sticky = W) 
    label2.grid(row=1, column=0, sticky = W) 
    label3.grid(row=2, column=0, sticky = W) 

    entry1.grid(row=0, column=1, sticky = W) 
    entry2.grid(row=1, column=1, sticky = W) 
    entry3.grid(row=2, column=1, sticky = W) 

    c1=Checkbutton(root, text="Remember username") 
    c1.grid(columnspan=2,sticky = W) 
    c2=Checkbutton(root, text="Remember password") 
    c2.grid(columnspan=2,sticky = W) 
    root.mainloop() 
if __name__ == "__main__": 
    main() 

ответ

0

Поскольку блокировка telnet блокируется, вам необходимо поместить фактические сообщения в отдельный поток из графического интерфейса. Вам также нужно поместить таймаут во все операции чтения, а затем проверить, есть ли у вас какие-либо операции записи между чтениями.

 Смежные вопросы

  • Нет связанных вопросов^_^