Я пытаюсь проверить, подключено ли определенное устройство (Lauterbach PowerDebug Pro) к сети. У меня есть следующий код, который я использую в представлении Django.
def checkConnection(hostname, port, timeout=5):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(timeout)
message = bytes.fromhex('{1024 bytes here}')
s.sendto(message,(hostname,port))
try:
if s.recv(1024):
return True
except ConnectionResetError:
return False
except socket.timeout:
return False
Если я запускаю эту функцию из представления Django (вызываемого через AJAX), она вернет False
.
Если запустить этот код в консоли Python, он вернет True
. Если я запускаю manage.py shell
и вручную пишу этот код, он вернет True
.
Однако, если я выполню manage.py shell
, импортирую и вызову эту функцию, он вернет False
из-за ошибка тайм-аута.
Как получилось? Я не могу понять, почему это не сработает. Я перехватил сообщения, используя Wireshark, и они все одинаковые. Ниже приведен вывод.
Код, написанный вручную в Django shell (возвращается True):
Нет. Источник времени назначения
Информация о длине протокола 233 17.202222 10.171.90.59 10.171.94.100 UDP 1066 59221 → 60010 Len = 1024
Кадр 233: 1066 байт на проводе (8528 бит), 1066 байт (8528 бит) на интерфейсе 0 Ethe rnet II, Sr c: IntelCor_c1: d7: 3e (b4: 6b: f c: c1: d7: 3e), Dst: All-HSRP-маршрутизаторы_5a (00: 00: 0 *) 1076 *: 07: a c: 5a) Inte rnet Версия протокола 4, Sr c: 10.171.90.59, Dst: 10.171.94.100 Протокол пользовательских дейтаграмм, Sr c Порт: 59221, Порт Dst: 60010 Данные (1024 байта)
0000 03 01 01 00 62 ea 46 fd 54 52 41 43 45 33 32 00
.... bFTRACE32. 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. ............... 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .............. 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... ............. 00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... ............ 00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... .......... 0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ......... 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ......... ....... 01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 01b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......... ...... 01d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............. ... 01f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .............. .. 0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. ............... 0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .............. 02b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... ............. 02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... ............ 0310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... .......... 0330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ......... 0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 0390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ......... ....... 03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 03d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......... ...... 03f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Данные: 0301010062ea46fd54524143453332000000000000000000… [Длина: 1024]
Нет. Источник времени назначения
Информация о длине протокола 234 17.220294 10.171.94.100 10.171.90.59 UDP 58 60002 → 59221 Len = 16
Кадр 234: 58 байт на проводе (464 бита), 58 байт (464 бита) на интерфейсе 0 Ethe rnet II, Sr c: Cisco_74: 52: 0b (a4: 6 c: 2a: 74: 52: 0b), Dst: IntelCor_c1: d7: 3e (b4: 6b: f c: c1: d7: 3e) Inte rnet Версия протокола 4, Sr c: 10.171.94.100, Dst: 10.171.90.59 Протокол пользовательских дейтаграмм, порт Src: 60002, порт Dst: 59221 Данные (16 байтов)
0000 23 00 00 00 0a ab 5a 3b 54 52 41 43 45 33 32 00
..... Z; TRACE32.
Data: 230000000aab5a3b5452414345333200
[Length: 16]
checkConnection Функция импортирована и запущена в Django оболочке (возвращается True):
Нет. Источник времени назначения
Информация о длине протокола 437 53.946438 10.171.90.59 10.171.94.100 UDP 1066 59224 → 60010 Len = 1024
Кадр 437: 1066 байт на проводе (8528 бит), 1066 байт (8528 бит) на интерфейсе 0 Ethe rnet II, Sr c: IntelCor_c1: d7: 3e (b4: 6b: f c: c1: d7: 3e), Dst: All-HSRP-маршрутизаторы_5a (00: 00: 0 *) 1091 *: 07: a c: 5a) Inte rnet Версия протокола 4, Sr c: 10.171.90.59, Dst: 10.171.94.100 Протокол пользовательских дейтаграмм, Sr c Порт: 59224, Порт Dst: 60010 Данные (1024 байта)
0000 03 01 01 00 62 ea 46 fd 54 52 41 43 45 33 32 00
.... bFTRACE32. 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. ............... 00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .............. 00d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... ............. 0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... ............ 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... .......... 0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ......... 0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 01b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ......... ....... 01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 01f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......... ...... 0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............. ... 0230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .............. .. 0260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... . 0290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ......... 0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ....... 0330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ......... ....... 0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... 0370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .......... ...... 0390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. ............... 03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .............. 03f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Данные: 0301010062ea46fd54524143453332000000000000000000 … [Длина: 1024]
Нет. Источник времени назначения
Информация о длине протокола 438 53.948831 10.171.94.100 10.171.90.59 UDP 58 60002 → 59224 Len = 16
Кадр 438: 58 байт на проводе (464 бита), 58 байт (464 бита) на интерфейсе 0 Ethe rnet II, Sr c: Cisco_74: 52: 0b (a4: 6 c: 2a: 74: 52: 0b), Dst: IntelCor_c1: d7: 3e (b4: 6b: f c: c1: d7: 3e) Inte rnet Версия протокола 4, Sr c: 10.171.94.100, Dst: 10.171.90.59 Протокол пользовательских дейтаграмм, порт Src: 60002, порт Dst: 59224 Данные (16 байтов)
0000 23 00 00 00 0a ab 5a 3b 54 52 41 43 45 33 32 00
..... Z; TRACE32.
Data: 230000000aab5a3b5452414345333200
[Length: 16]
Итак что дает?
Редактировать: Работает для TCP-соединений (например, checkConnection ('10 .11.12.13 ', 23) вернет True). По какой-то причине не будет получено только UDP-сообщение.
В этом случае checkConnection имеет вид:
def checkConnection(hostname, port, timeout=5):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(timeout)
try:
s.connect((hostname, port))
s.shutdown(socket.SHUT_WR)
while True:
try:
data = s.recv(1024)
if data:
s.close()
return True
except socket.timeout:
return False
except TimeoutError:
return False
except ConnectionRefusedError:
return False
except ConnectionResetError:
return False