通过python控制多引导

通过python控制多引导,python,networking,multiboot,Python,Networking,Multiboot,我编写了一系列Python脚本,允许我使用Python在局域网上重新启动、关机和唤醒。 例如,wake on LAN脚本使用网络发送一个数据包来初始化机器的引导。 问题是:我正在运行一些性能测试,在一个桌面上安装了12个不同版本的Windows(7、8和蓝色,x86和x64) 因此,启动时,可以选择启动哪台机器。一旦我弄明白了,我就差不多完了。 是否有任何python库或任何可以通过python运行的东西可以控制引导到哪台机器? 例如,假设我们在启动引导中安装了A、B、C和D。 例如,是否有一种

我编写了一系列
Python
脚本,允许我使用
Python
在局域网上重新启动、关机和唤醒。 例如,
wake on LAN
脚本使用网络发送一个数据包来初始化机器的引导。 问题是:我正在运行一些性能测试,在一个桌面上安装了12个不同版本的Windows(7、8和蓝色,x86和x64) 因此,启动时,可以选择启动哪台机器。一旦我弄明白了,我就差不多完了。 是否有任何python库或任何可以通过
python
运行的东西可以控制引导到哪台机器? 例如,假设我们在启动引导中安装了
A
B
C
D
。 例如,是否有一种方法可以检索这些选项的列表,然后选择boot
B
启动?除此之外,我已经弄清楚了整个应用程序。 以下是局域网唤醒的脚本:

#!/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')
#/usr/bin/env python
#wol.py
导入套接字
导入结构
局域网上的def唤醒(macaddress):
“”“使用WOL打开远程计算机。”“”
#检查macaddress格式并尝试进行补偿。
如果len(macaddress)==12:
通过
elif len(macaddress)==12+5:
sep=macaddress[2]
macaddress=macaddress.replace(sep“”)
其他:
raise VALUERROR('不正确的MAC地址格式')
#填充同步流。
数据=''.join(['FFFFFFFFFFFF',macaddress*20])
发送数据=“”
#拆分十六进制值并打包。
对于范围内的i(0,len(数据),2):
send_data=''.join([send_data,
结构包('B',int(数据[i:i+2],16)))
#向局域网广播。
sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)
sock.setsockopt(socket.SOL_socket,socket.SO_广播,1)
sock.sendto(发送数据,('',7))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#将macAddress与任何分隔符一起使用。
局域网唤醒('0F:0F:DF:0F:BF:EF')
局域网唤醒('0F-0F-DF-0F-BF-EF')
#或者没有任何分隔符。
lan上的唤醒('0F0FDF0FBFEF')

你这里的东西真聪明。但我不确定您是否能够在计算机启动的这个阶段通过网络发送键盘命令。如果可能的话,我会想象它是需要在BIOS中启用的东西。