У меня есть скрипт 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))
Это должно ожидать соединения с тайм-аутом, когда целевой узел / порт не открыт. Иногда маршрутизатор или хост будут быстро возвращать соединение, которому отказывают, но по умолчанию большинство сервисов настроено к "хитрости" и не отвечает всегда.
Вы можете обходное решение эта проблема при помощи функции setTimeout в Python на сокете:
s.setTimeout(1.0)
Это принимает много секунд, но это может быть число с плавающей точкой как 0.5
для 500 мс.