/
noxit
/
DevOps_practices
Обзор
Документация
Войти
/
noxit
/
DevOps_practices
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
test
port_scanner.py
75 строк
3 KB
kirill
add_1line_in_hist
16 ноя 2025, 11:49
16 ноя 2025, 11:49
64a0488
Код
Авторство
О чём код?
import socket import time # Список серверов (IP или домены) servers = [ #"1.1.1.1", "77.88.8.8" #"8.8.8.8" ] # Порты для сканирования ports = list(range(1, 65536)) # Время ожидания ответа (сек) timeout = 0.01 def scan_port(host, port): """Проверяет, открыт ли порт на хосте.""" try: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(timeout) result = s.connect_ex((host, port)) return result == 0 # True, если порт открыт except socket.gaierror: return "error_resolve" # Не удалось разрешить имя/IP except (socket.timeout, socket.error): return "error_timeout" # Таймаут или ошибка соединения def scan_server(host): """Сканирует все порты для одного сервера.""" print(f"\n{'='*50}") print(f"СКАНИРОВАНИЕ: {host}") print(f"{'='*50}") open_ports = [] closed_ports = [] errors = [] for port in ports: status = scan_port(host, port) if status is True: print(f" Порт {port}: ОТКРЫТ") open_ports.append(port) elif status == "error_resolve": print(f" Порт {port}: ОШИБКА (не удалось разрешить хост)") errors.append(port) break # Дальше сканировать бессмысленно elif status == "error_timeout": print(f" Порт {port}: ЗАКРЫТ/ФИЛЬТРУЕТСЯ") closed_ports.append(port) else: print(f" Порт {port}: ЗАКРЫТ") closed_ports.append(port) # Сводная информация print(f"- - - Сводка для {host} - - -") print(f"Открытые порты: {open_ports if open_ports else 'нет'}") print(f"Закрытые порты: {len(closed_ports)}") print(f"Ошибки: {len(errors)}") def main(): print("НАЧАЛО СКАНИРОВАНИЯ ПОРТОВ\n") start_time = time.time() for server in servers: scan_server(server) total_time = time.time() - start_time print(f"\n{'='*50}") print(f"Сканирование завершено за {total_time:.2f} сек.") print(f"Проверено серверов: {len(servers)}") print(f"Порты: {ports}") if __name__ == "__main__": main()