Почему скрипт сканирует только последний сайт?

Пишу небольшой софт для сканирования открытых портов, скрипт должен взять сайт из файла, просканировать и записать результат в файл, но скрипт сканирует(или записывает результаты) только последнего сайта. Код:
import socket

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]

host = open('site-list.txt', 'r', encoding='ASCII')
for site in host:    
    print("ожидайте сканирование")

    for port in ports:
        s = socket.socket()
        s.settimeout(1)
        try:
            s.connect((site, port))
        except:
            continue
        else:
            results = [f"{site}: {port} порт активен \n"]
            for result in results:
                with open('res.txt', 'a', encoding='UTF-8') as f:
                    f.write(result)

print("Сканирование завершено")
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
Он сканирует правильно, а results состовляется не верно.
В начале перед всеми циклами results = []
А где идёт запись - вот так:
results.append(f"{site}: {port} порт активен")
                with open('res.txt', 'a', encoding='UTF-8') as f:
                    f.write("\n".join(results))

Как-то я даже удивлён, что вы циклы для сайтов и портов сделали правильно, а с записью результата в файл какая-то каша.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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