我有四个web power switches每个有八个可远程控制的电源 socket ,总共有 32 个电源 socket 。我有一个被测设备连接到每个 socket 。这些被测设备已联网并具有 SSH。它们被设计为在两分钟内启动,但由于是开发中的原型(prototype),它们有时需要长达十分钟才能启动。它们也容易随机崩溃、死机或以其他方式变得无响应。
我正在寻找一种可靠、高效、自动化的方法来将设备映射到电源 socket 。我目前的方法可靠且自动化,但速度很慢:
turn off all outlets
for each outlet:
turn outlet on
wait ten minutes
try to connect to all devices
store all responsive devices in a list
turn the outlet off
try to connect to the devices in the responsive list
if any are no longer responsive, map them to this outlet
turn on all outlets
根据您的计算,每个 socket 大约需要 10 分钟,10 分钟 x 32 等于 320 分钟,即五个多小时。我觉得必须有更好的方法,但我一直想不出任何办法。
最佳答案
假设导出编号为 0 到 31。
第一次尝试:打开所有奇数编号的 socket 并注意哪些设备有响应
第二次尝试:打开所有在其数字的二进制表示中第二位为 1 的 socket (即 2,3,6,7,10,11, ...)
第三次尝试:打开所有在二进制表示中第三位为 1 的 socket (即 4,5,6,7,12,13,14,15, ...)
...
第五次尝试:打开所有数字 >=16 的 socket
现在,每台设备在某些尝试中都有响应。如果您将结果再次写成二进制数,您将获得导出的编号。
例如,如果设备在尝试 5、3、2 中处于事件状态,而在尝试 4 和 1 中处于非事件状态,我们得到 10110,即 22。因此该设备必须连接到 socket 22。
关于algorithm - 将设备映射到电源 socket 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734694/