Написал очень примитивный, но многопоточный сканер портов, который проверяет, открыт порт или нет.
Проблема заключается в этом:
То есть, программа сначала выводит сообщение о завершении работы, а потом выводит результаты своей работы.
Вот код:
import socket
import sys
import threading
import requests, shutil, os
host = input('IP or host name: ')
print('--------------------------------------')
print('#########')
print('#Scaning#')
print('#########' + '\n')
def PortCheck(port):
# Запускаем проверку порта
s = socket.socket()
s.settimeout(1)
try:
s.connect((host, port))
except socket.error:
pass
else:
s.close
print(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()
print('--------------------------------------')
input('Process ended. Press Enter.' + '\n')
Как сделать так, чтобы сначала выводился список открытых портов, а потом надпись о завершении работы программы?