Сценарий проверки порта петли петли останавливается без ошибки на порту 80

У меня есть скрипт Python, который сканирует порты. Я сканирую хост, который имеет 2 открытых порта (22 и 80). Когда мой скрипт достигает порта 22, я получаю сообщение «Открыть порт + запущенные сервисы». Затем сценарии продолжаются ... Когда он достигает порта 80, он застревает. Я не знаю почему, я не получаю ошибку.

Может кто-нибудь просмотреть мой код, потому что я не могу найти проблему. Благодарю

    for port in range(1,82):
            s = socket.socket()
            result = s.connect_ex((ip, port))
            s.close()
            if result == 0:
                    s = socket.socket()
                    s.connect((ip, port))
                    data = str(s.recv(1024))
                    s.close()
                    print ("Port {}: Open  --  ".format(port) + (data))
            else:
                    print ("Port {}: Closed".format(port))
2
задан 9 September 2019 в 00:15

1 ответ

Это должно ожидать соединения с тайм-аутом, когда целевой узел / порт не открыт. Иногда маршрутизатор или хост будут быстро возвращать соединение, которому отказывают, но по умолчанию большинство сервисов настроено к "хитрости" и не отвечает всегда.

Вы можете обходное решение эта проблема при помощи функции setTimeout в Python на сокете:

s.setTimeout(1.0)

Это принимает много секунд, но это может быть число с плавающей точкой как 0.5 для 500 мс.

2
ответ дан 2 December 2019 в 03:27

Другие вопросы по тегам:

Похожие вопросы: