Я запускаю сценарий, который просматривает текстовый файл. В каждой строке текстового файла указан IP-адрес. Скрипт захватывает баннер, затем записывает ip + banner в другой файл. Проблема в том, что он просто останавливает около 500 строк, более или менее, без ошибок. Еще одна странность: если я запустил его с python3, он сделает то, что я сказал выше. Если я запустил его с python, он перебирает эти 500 строк, а затем начинает с самого начала. Я заметил это, когда увидел повторы в моем выходном файле. В любом случае, вот код, может быть, вы, ребята, скажете мне, что я делаю не так:
import os
import subprocess
import concurrent.futures
#import time, random
import threading
import multiprocessing
with open("ipuri666.txt") as f:
def multiprocessing_func():
try:
line2 = line.rstrip('\r\n')
a = subprocess.Popen(["curl", "-I", line2, "--connect-timeout", "1", "--max-time", "1"], stdout=subprocess.PIPE)
b = subprocess.Popen(["grep", "Server"], stdin=a.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#a.stdout.close()
out, err = b.communicate()
g = open("IP_BANNER2","a")
print( "out: {0}".format(out))
g.write(line2 + " " + "out: {0}\n".format(out))
print("err: {0}".format(err))
except IOError:
print("Connection timed out")
if __name__ == '__main__':
#starttime = time.time()
processes = []
for line in f:
p = multiprocessing.Process(target=multiprocessing_func, args=())
processes.append(p)
p.start()
for process in processes:
process.join()