Моя программа telnet на python слишком медленно подключается к ip / порту

#python #multithreading #sockets #telnet #telnetlib

#python #многопоточность #сокеты #telnet #telnetlib

Вопрос:

это тест безопасности на Python. Использую telnet для подключения к общедоступному IP / порту, но моя программа работает так медленно, что не завершается. Я даже установил время ожидания в 1 секунду. Как я могу ускорить это?

Это мой код:

 
import telnetlib

# long list of IPs
ips = ["xx.81.56.xxx", "xx.81.56.xxx"]

# long list of ports
ports = ["22", "10800" , "4422"]

connections = {}

for ip in ips:
    for port in ports:
        try:
            connections[ip, port] = isinstance(telnetlib.Telnet(ip, port, 1), telnetlib.Telnet)
        except:
            connections[ip, port] = False

  

Спасибо!

Комментарии:

1.Что вы имеете в виду под: «моя программа работает так медленно, что она не завершится«. что именно мешает ее завершению? Можете ли вы указать длины двух списков? и вы хотите протестировать каждый IP с каждым портом? Сколько времени требуется для того, чтобы одно такое соединение завершилось сбоем? Одна секунда? Чего бы вы ожидали? Вы могли бы попробовать распараллеливание, но я не уверен, что одна попытка не заставит ресурсы быть занятыми.

2. Пробовать что-то по одному — просто неправильный подход, если у вас есть большое количество вещей для тестирования, каждая из которых может занять значительное количество времени. Какой длины список IP-адресов? Какой длины список портов?

3. Вы могли бы добавить инструкции print во внутренний цикл, чтобы видеть ход выполнения программы, или, по крайней мере, добавить некоторый код, чтобы пользователь мог изящно выйти из цикла и проверить частичные результаты (без необходимости проходить через KeyboardInterrupt )..

4. Я также немного озадачен, почему вы называете это «программой telnet» и почему вы используете telnetlib. Цель этой программы просто посмотреть, к каким комбинациям IP / портов вы можете подключиться? Потому что это не имеет большого отношения к telnet и, вероятно, уводит вас в сторону. Какова фактическая цель этой программы?

5.Когда telnetlib.Telnet не возвращался бы экземпляр Telnet ?

Ответ №1:

Я ускорил это с помощью следующих шагов:

  1. Использование Nmap для сокращения моего списка портов. Сопоставил каждый IP с ограниченным списком открытых портов.
  2. Сократите время работы telnet до 0,01 секунды => telnetlib.Telnet (ip, порт, .01)

Спасибо всем за советы и комментарии!