我编写了一堆Python
脚本,允许我使用Python
在LAN上重启,关闭和唤醒。
例如,wake on LAN
脚本使用网络发送初始化机器引导的数据包。
问题是:我正在运行一些性能测试,我在一个桌面上安装了12个不同版本的Windows(7,8和蓝色,x86和x64)
因此,当启动时,可以选择启动哪台机器。一旦我弄清楚这个数字,那我就完成了。
是否有任何python库,或者可以通过Python
运行的任何可以控制启动哪台机器的东西?
例如,假设我们在启动启动时安装了A
,B
,C
和D
。
有没有办法可以检索这些选项的列表,然后选择启动B
来启动,例如?除此之外,我已经找到了整个应用程序。
以下是Wake on LAN
的脚本:
#!/usr/bin/env python
# wol.py
import socket
import struct
def wake_on_lan(macaddress):
""" Switches on remote computers using WOL. """
# 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:
raise ValueError('Incorrect MAC address format')
# Pad the synchronization stream.
data = ''.join(['FFFFFFFFFFFF', macaddress * 20])
send_data = ''
# Split up the hex values and pack.
for i in range(0, len(data), 2):
send_data = ''.join([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))
if __name__ == '__main__':
# Use macaddresses with any seperators.
wake_on_lan('0F:0F:DF:0F:BF:EF')
wake_on_lan('0F-0F-DF-0F-BF-EF')
# or without any seperators.
wake_on_lan('0F0FDF0FBFEF')