Задать вопрос
AlexDarkStalker
@AlexDarkStalker
Хочу научится программировать на Python

Откуда столько переносов в выводе в консоль?

Написал код, но при выводе в консоль получается такое:
5b40dad147687249341248.pngОткуда столько переносов?

Вот код:

import socket # Библиотеки для работы с сетями
import threading # Импорт потоков
from colorama import Fore # Импорт цветов для текста
from colorama import init # Импорт иницилизации
init() # Иницилизация Colorama, если не сделать, на винде работать не будет

host = input('IP or host name: ') # Запрос хоста

print('--------------------------------------')
print(Fore.BLUE + '#########')
print(Fore.BLUE + '#Scaning#')
print(Fore.BLUE + '#########' + '\n')

def PortCheck(port):
    # Запуск проверки порта
    s = socket.socket() # Создаем сокет
    s.settimeout(1) 
    # Проверка порта
    try:
        s.connect((host, port))
    except socket.error:
        print(Fore.RED + (str(port) + ' is closed' + '\n'))
    else:
        s.close
        print(Fore.GREEN + (str(port) + ' is open' + '\n'))
# Порты для проверки
ports = [20, 21, 22, 23, 25, 42, 43, 53, 67, 69, 80, 110,
         115, 123, 137, 138, 139, 143, 161, 179, 443, 445,
         514, 515, 993, 995, 1080, 1194, 1433, 1702, 1723,
         3128, 3268, 3306, 3389, 5432, 5060, 5900, 5938, 8080, 10000, 20000]
# Запуск потока для каждого порта из списка
for port in ports:
    threading.Thread(target=PortCheck, args = [port]).start()

for t in threading.enumerate():          # Получаем все потоки
    if t != threading.current_thread():  # Если это не текущий поток
        t.join()                         # Ожидаем его завершения
        
print('--------------------------------------')
input('Process ended. Press Enter.' + '\n')
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
@0Memory
Вместо того, чтобы сразу выводить порты сохранил в массив и вывел после проверки всех портов с помощью перебора

import socket  # Библиотеки для работы с сетями
import threading  # Импорт потоков
from colorama import Fore  # Импорт цветов для текста
from colorama import init  # Импорт иницилизации

init()  # Иницилизация Colorama, если не сделать, на винде работать не будет

host = input('IP or host name: ')  # Запрос хоста

print('--------------------------------------')
print(Fore.BLUE + '#########')
print(Fore.BLUE + '#Scaning#')
print(Fore.BLUE + '#########' + '\n')

closed_ = {}
opened_ = {}

def PortCheck(port):
    # Запуск проверки порта
    s = socket.socket()  # Создаем сокет
    s.settimeout(1)
    # Проверка порта
    try:
        s.connect((host, port))
    except socket.error:
        closed_[port] = port
    else:
        s.close
        opened_[port] = port


# Порты для проверки
ports = [20, 21, 22, 23, 25, 42, 43, 53, 67, 69, 80, 110,
         115, 123, 137, 138, 139, 143, 161, 179, 443, 445,
         514, 515, 993, 995, 1080, 1194, 1433, 1702, 1723,
         3128, 3268, 3306, 3389, 5432, 5060, 5900, 5938, 8080, 10000, 20000]
# Запуск потока для каждого порта из списка
for port in ports:
    threading.Thread(target=PortCheck, args=[port]).start()

for t in threading.enumerate():  # Получаем все потоки
    if t != threading.current_thread():  # Если это не текущий поток
        t.join()  # Ожидаем его завершения

for port in ports:
    if closed_.__contains__(port):
        print(Fore.RED + (str(port) + ' is closed' + '\n'))
    else:
        print(Fore.GREEN + (str(port) + ' is open' + '\n'))

print('--------------------------------------')
input('Process ended. Press Enter.' + '\n')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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