Я создаю программу, которая автоматически настроит устройство с IP-адресом, чтобы оно было готово к использованию в моей сети. IP-устройство использует веб-приложение в качестве интерфейса, где вы можете изменить его настройки и конфигурацию сети, например, IP-адрес.
В настоящее время способ, которым я это делаю, не так надежен, как хотелось бы.
В настоящее время я использую библиотеку Win32_NetworkAdapterConfiguration для поиска текущей конфигурации сети. Затем я добавляю IP-интерфейс по умолчанию для IP-устройства, используя этот код:
def ChangeNetworkProperties(self, device_ip_interface):
# Handle new IPv4 Interface Object
new_ip = device_ip_interface.ip + 1 #Adding the next one up currently
new_netmask = device_ip_interface.netmask
new_gateway = device_ip_interface.gateway
resp = self.nic.EnableStatic(
IPAddress=[new_ip], SubnetMask=[new_netmask])
self.nic.SetGateways(DefaultIPGateway=[new_gateway])
return resp[0] # Handle errors after the return
Затем я сплю, чтобы изменения вступили в силу, а затем просто подключаюсь к веб-приложению, используя
def Ping(url):
r = requests.get(url) #http://192.168.1.10
if r.status_code == 200:
return True
return False
Я пытался использовать подпрограмму ОС для проверки связи с модулем подпроцесса, но при этом получал нестабильные результаты. Все это кажется хрупким и хакерским. Я полагаю, это то, что я получаю за использование стороннего веб-приложения для устройств. Трудно рассмотреть все крайние случаи в конечном автомате, которые могут произойти
Есть ли лучший способ сделать это?