У меня есть список серверов AWS Ubuntu, например:
ubuntu@ec2-bla-95-blablabla-23.amazonaws.com
ubuntu@ec2-bla-95-blablabla-43.amazonaws.com
ubuntu@ec2-bla-95-blablabla-24.amazonaws.com
...
На каждом из этих серверов у меня есть папка с переменным количеством файлов, путь для каждого сервера одинаков, например /roth/files/
Я хочу написать сценарий Python, который будет извлекать содержимое этих файлов и объединять их локально на моем компьютере.
Как мне получить содержимое этих файлов на удаленных серверах?
Способ входа в систему на этих серверах
ssh -i path/aws.pem ubuntu@ec2-bla-95-blablabla-23.amazonaws.com
например, с помощью ключа
Я нашел ответ на подобный вопрос здесь
sftp_client = ssh_client.open_sftp()
remote_file = sftp_client.open('remote_filename')
try:
for line in remote_file:
# process line
finally:
remote_file.close()
Но я не вижу, где вы предоставляете имя сервера и ключ ...
РЕДАКТИРОВАТЬ: В качестве небольшого исправления к ответу Ганеша вам нужно выполнить следующее для извлечения каждого файла, иначе вы получите сообщение об ошибке, сообщающее, что вы пытаетесь получить каталог:
lobj = sftp.listdir_attr(target_folder_remote)
for o in lobj:
name = o.filename
sftp.get(os.path.join(target_folder_remote, name), os.path.join(target_folder_local, name))