我正在尝试用Python编写我的第一个程序。这是一个使用telnet远程关机的程序。 当output设置为console时,代码可以正常工作,但是我尝试使用tkinter创建一个小接口。按钮和滚动文本框。在
我不能从shutdownAll()函数内部执行t.insert。流经过它并继续tn = telnetlib.Telnet(host,port,timeout)
。在
但是如果我删除tn = telnetlib.Telnet(host,port,timeout)
,以及所有与telnet相关的东西,它就可以正常工作了。在
我错过了什么?谢谢你的耐心。在
from tkinter import *
import csv, telnetlib, socket, sys
def shutdownAll():
for index,row in enumerate(addressList):
T.insert(END, "This doesn't work")
print ('Trying to establish connection with: ' + row[4])
print ('Host: ' + row[0] + ', Username: ' + row[1] + ', Password: ' + row[2] + ', OS: ' + row[3])
host = row[0]
username = row[1]
password = row[2]
os = row[3]
computerName = row[4]
try :
tn = telnetlib.Telnet(host,port,timeout)
tn.read_until(login_prompt, timeout)
tn.write(username.encode('ascii') + b"\n")
if password :
tn.read_until(password_prompt,timeout)
tn.write(password.encode('ascii') + b"\n")
print ('Sending shutdown command to: ' + computerName)
if os == "linux" :
tn.write("sudo poweroff\n")
elif os == "windows" :
tn.write("shutdown /s\n")
tn.close()
except socket.timeout :
print("ERROR! Can't connect")
T.insert(END, "Inside the shutdown")
#VARIABLES
tn = None
host = "192.192.1.39"
port = 23
timeout = 10
username = "pi"
password = "raspberry"
os = "linux"
computerName = "Test"
login_prompt = b"login: "
password_prompt = b"Password: "
addressList = csv.reader(open('computers.csv', 'r'))
#GUI WINDOW
window = Tk()
window.title("Remote Shutdown utility")
window.geometry("500x500")
btn = Button(window, text="Shutdown all computers now!", command=shutdownAll)
btn.pack()
S = Scrollbar(window)
T = Text(window, height=4, width=50)
S.pack(side=RIGHT, fill=Y)
T.pack(side=LEFT, fill=Y)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
T.insert(END, "This a test")
window.mainloop()
目前没有回答
相关问题 更多 >
编程相关推荐