Вывести список файлов на SFTP-сервере, соответствующих шаблону в Python, используя Paramiko
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('hostname', username='test1234', password='test')
path = ['/home/test/*.txt', '/home/test1/*.file', '/home/check/*.xml']
for i in path:
for j in glob.glob(i):
print j
client.close()
Я пытаюсь перечислить файлы подстановки на удаленном сервере с помощью glob.glob
, Но glob.glob()
не работает.
Использование Python 2.6.
Удаленный сервер содержит эти файлы: /home/test1/check.file
, /home/test1/validate.file
, /home/test1/vali.file
Может кто-нибудь, пожалуйста, помогите по этому вопросу.
1 ответ
Решение
glob
не будет магическим образом работать с удаленным сервером, просто потому, что вы создали SSHClient
до.
Вы должны использовать Paramiko API для просмотра файлов, например SFTPClient.listdir
:
sftp = client.open_sftp()
for filename in sftp.listdir('/home/test'):
if filename.endswith('.txt'):
print filename
Примечание: не использовать AutoAddPolicy
, Вы теряете безопасность, делая это. Смотрите Paramiko "Неизвестный сервер".
Или используйте pysftp, который является оболочкой paramiko, и напишите что-то вроде этого:
import pysftp
def store_files_name(fname):
pass
def store_dir_name(dir_name):
pass
def store_other_file_type(other_file):
pass
with pysftp.Connection('server', username='user', password='pass') as sftp:
sftp.walktree('.', store_files_name, store_dir_name, store_other_file_type)