Я всего лишь 1023 * месяц, и это первая проблема, на которую я не смог найти ответ!
Я создаю Python скрипт, который имеет сканер IP как часть своей функциональности. Он ищет хосты в сегменте локальной сети с открытым портом Te lnet (23) и возвращает список найденных хостов. Этот скрипт должен быть запущен на Windows. Код ниже:
import socket
def isOpen(hostname, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.setdefaulttimeout(0.1)
result = sock.connect_ex((hostname, port))
sock.close()
return result == 0
def ipScan(start, end):
livehosts = []
for i in range (start, end):
res = isOpen("192.168.1."+str(i), 23)
if res:
foundhost = "192.168.1." + str(i)
livehosts.append(foundhost)
return livehosts
print (ipScan(0, 254))
Я знаю, что он грубый и не учитывает, на каком компьютере su bnet находится сканирование, но я удалил его, чтобы попытаться устранить неполадки.
Проблема в том, что мне возвращают только список из одного элемента.
['192.168.1.2']
В сети должно быть 5 устройств с открытыми портами Te lnet, но я могу получить только этот скрипт для возврата одного устройства. Требуемый вывод:
['192.168.1.2','192.168.1.3','192.168.1.4','192.168.101','192.168.1.124', etc...]
Запуск поиска на известном активном хосте вернет этот хост, но больше ничего. Например, если я начну поиск с 192.168.1.101, он вернет
['192.168.1.101']
, а не
['192.168.1.101', '192.168.1.124', etc...]
, как следует.
В будущем я намерен реализовать поточная обработка для снижения производительности и средства сценария, определяющие, в каком су bnet оно находится, и от того, что нужно сканировать.