如何使用python中的scp通过os.system获取最新文件?

问题描述

我想使用python os.system 库从远程UNIX远程目录获取/发送最新文件夹,该目录是名称包括日期时间的文件夹系统,例如:

[usr1@server1 stats_from_dir]$ pwd
/tmp/dir1/stats_from_dir

[usr1@server1 stats_from_dir]$ ls -alrth
drwxr-x---  2  23K Aug 28 12:50 pmexport_20200825
drwxr-x---  2  23K Aug 28 12:50 pmexport_20200826
drwxr-x---  2  21K Aug 28 12:50 pmexport_20200827

我可以得到所有这样的文件夹;

import os
    
get_files = 'scp -r [email protected]:/tmp/dir1/stats_from_dir/* /dir2/.'
    
os.system(get_files)

但是如何仅获取最新文件夹?有没有办法在os.system库中使用paramters而不使用其他库,例如paramiko,子进程..etc?

解决方法

尝试这个:

import os
    
get_files = "scp -r [email protected]:/tmp/dir1/stats_from_dir/$(ssh [email protected] 'ls -t /tmp/dir1/stats_from_dir/ | head -1') /dir2/."
    
os.system(get_files)
,

您知道文件夹的实际日期吗?

假设最后一个文件夹是昨天

然后使用dateetime.date编译昨天的日期,并使用datetime.timedelta减去一天。

然后使用strftime以所需的格式转换昨天。

最后,将当天添加到使用os.system的字符串中。

import os
import datetime
    

yesterday = datetime.date.today() - datetime.timedelta(days=1)
yesterday_string = yesterday.strftime('%Y%m%d')

get_files = 'scp -r [email protected]:/tmp/dir1/stats_from_dir/pmexport_{} /dir2/.'.format(yesterday_string)
    
os.system(get_files)