VoisHunter
как дописать парсер который берет поочередно ip ?
Надо на функциях всё делать.
Вот это “брал поочерёдно ip” - это называется параметризация. Параметризация кода - это когда можешь менять ip, с которыми работаешь, когда можешь менять место, откуда берутся ip. Функции позволяют параметризировать код. У тебя же код не параметризован, поэтому подать ему другие адреса ты не можешь, для этого тебе надо менять сам код.
Если хочешь написать хороший код, то надо сначала всё разделить в задаче. Список ip должна получать одна функция, подключаться к ftp-серверу должна другая функция, данные для авторизации на ftp-сервере должна получать третья функция. Все эти функции друг про друга не должны знать, у них только есть параметры и возвращаемые значения, через которые они могут что-то принимать снаружи и возвращаться наружу.
Пример на псевдокоде отправки архива на ftp-сервер
servername = 'ftp.host.com'
port = 21
authfile = 'secret.dat'
backupdir = '/home/user/backup'
destination_directory = '/backups'
login, password = get_auth_info(authfile)
connection = ftp_server_connect(servername, port, login, password)
archive = get_backup_archive(backupdir)
connetion_send(connection, archive, destination_directory)
Например, функция get_auth_info() не знает, для кого она добывает имя и пароль, для ftp-сервера, для ssh-сервера или для mysql-сервера. Функция ftp_server_connect() не знает, как будет использоваться соединение, которая она возвращает, будет ли туда что-то посылаться или, наоборот, скачиваться оттуда. Функция get_backup_archive() только добывает архивный файл и не знает, зачем его запросили и что с ним будут делать. Функция connetion_send() не знает, что это за соединение, с ftp-сервером или с imap-сервером, и не знает, что файл, который она передаёт, является архивным, а не присланным по почте или взятым с диска.
Вот когда дойдёшь до всего этого, когда коды станут такими, тогда и сможешь их чуть-чуть менять там под что-либо (и то, если потребуется). А пока у тебя всё скопом, тебе всё придётся только заново писать, иначе ты и новое не напишешь, и то, что написал, тоже сломаешь.