python – 当我SSH到服务器时,如何获取所有.log和.txt文件
发布时间:2020-12-20 11:19:24 所属栏目:Python 来源:网络整理
导读:我正在使用Paramiko模块登录服务器(某些服务器上的ssh和其他服务器上的sftp).我可以从服务器上的特定文件夹中获取文本和日志文件没问题.但是有许多子目录都有.txt和.log文件.我读了一些get方法不接受的地方(* .txt).有没有人知道解决这个问题的方法.这是我目
我正在使用Paramiko模块登录服务器(某些服务器上的ssh和其他服务器上的sftp).我可以从服务器上的特定文件夹中获取文本和日志文件没问题.但是有许多子目录都有.txt和.log文件.我读了一些get方法不接受的地方(* .txt).有没有人知道解决这个问题的方法.这是我目前用于登录服务器并获取特定日志的代码:
import paramiko import sys import os ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('10.5.48.74',username='root',password='******') ftp = ssh.open_sftp() ftp.get('/var/opt/crindbios/log/crindbios.log','.') ftp.close() 解决方法
使用以下脚本获取文件列表.然后使用ftp.get迭代列表
import paramiko import os ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('localhost',username='****') apath = '/var/log' apattern = '"*.log"' rawcommand = 'find {path} -name {pattern}' command = rawcommand.format(path=apath,pattern=apattern) stdin,stdout,stderr = ssh.exec_command(command) filelist = stdout.read().splitlines() ftp = ssh.open_sftp() for afile in filelist: (head,filename) = os.path.split(afile) print(filename) ftp.get(afile,'./'+filename) ftp.close() ssh.close() 这是dustyprogrammer提出的:在远程服务器上,您应用shell命令来获取文件列表.然后用python对列表进行后处理. 要下载,你必须为每个文件创建一个新的文件路径 – 下载到目录,因为你建议不起作用(对我来说). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |