Aplicação gráfica para Wake-on-LAN com Python 3 + GUI Tk/Tcl
Publicado por Fernando (última atualização em 18/11/2013)
[ Hits: 5.558 ]
Homepage: https://github.com/phoemur/
Estou começando a aprender programar GUI e fiz essa interface para o protocolo Wake-on-LAN em Python 3 utilizando Tkinter + Ttk.
Peguei a função WOL já pronta e implementei a GUI.
Requer: Python > 3.1.
Façam bom uso.
#!/bin/env python3
#
# Written by phoemur - nov / 2013
#
# Thanks to ActiveState Code Recipes:
# http://code.activestate.com/recipes/358449-wake-on-lan/
# and
# http://code.activestate.com/recipes/577609-wake-on-lan-for-python-3/
import socket, struct
from tkinter import *
from tkinter import ttk, messagebox
def wake_on_lan(*args):
""" Switches on remote computers using WOL.
"""
try:
macaddress = str(mac.get()).upper()
broadcast = str(broad.get())
except:
pass
# Check macaddress format and try to compensate
if len(macaddress) == 12:
pass
elif len(macaddress) == 12 + 5:
sep = macaddress[2]
macaddress = macaddress.replace(sep,'')
else:
messagebox.showinfo(message='Incorrect MAC Address format', title='Warning')
return
# Pad the synchronization stream
data = b'FFFFFFFFFFFF' + (macaddress * 20).encode()
send_data = b''
# Split up the hex values in pack
for i in range(0, len(data), 2):
send_data += struct.pack('B', int(data[i: i + 2], 16))
# Broadcast it to the LAN
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(send_data, (broadcast, 7))
def make_menu(w):
global the_menu
the_menu = Menu(w, tearoff=0)
the_menu.add_command(label="Cut")
the_menu.add_command(label="Copy")
the_menu.add_command(label="Paste")
def show_menu(e):
w = e.widget
the_menu.entryconfigure("Cut", command=lambda: w.event_generate("<<Cut>>"))
the_menu.entryconfigure("Copy", command=lambda: w.event_generate("<<Copy>>"))
the_menu.entryconfigure("Paste", command=lambda: w.event_generate("<<Paste>>"))
the_menu.tk.call("tk_popup", the_menu, e.x_root, e.y_root)
# Start our GUI
root = Tk()
root.title("Py3k - Wake-On-LAN")
root.resizable(FALSE,FALSE)
make_menu(root)
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe['relief'] = 'raised'
mac = StringVar()
mac.set('AA:BB:CC:DD:EE:FF')
broad = StringVar()
broad.set('255.255.255.255')
mac_entry = ttk.Entry(mainframe, width=17, textvariable=mac)
mac_entry.grid(column=2, row=1, sticky=(W, E))
broad_entry = ttk.Entry(mainframe, width=15, textvariable=broad)
broad_entry.grid(column=2, row=2, sticky=(W, E))
ttk.Button(mainframe, text="Wake-On-LAN", command=wake_on_lan).grid(column=3, row=3, sticky=W)
ttk.Button(mainframe, text = "QUIT", command=root.quit).grid(column=1, row=3, sticky=E)
ttk.Label(mainframe, text="MAC Address: ").grid(column=1, row=1, sticky=(W, E))
ttk.Label(mainframe, text="Broadcast Address: ").grid(column=1, row=2, sticky=(W, E))
for child in mainframe.winfo_children():
child.grid_configure(padx=5, pady=5)
mac_entry.focus()
root.bind('<Return>', wake_on_lan)
root.bind("<Button-3><ButtonRelease-3>", show_menu)
root.mainloop()
Scanner Wifi in Python [very simple and helpful]
ArpRequest - requisição arp para endereço físico
Shell reverso em Python - cliente e servidor
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como impedir exclusão de arquivos por outros usuários no (Linux)
Cirurgia no Linux Mint em HD Externo via USB
Anúncio do meu script de Pós-Instalação do Ubuntu
Formas seguras de instalar Debian Sid (2)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Alguém executou um rm e quase mata a Pixar! (3)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









