使用smbclient从samba共享获取最新文件

时间:2017-08-01 08:27:45

标签: python python-3.x smb

我的目录包含文件和它的不同版本,我想从中选择最新版本,可以按日期排序,也可以按文件名末尾的修订号排序,如

Myfile2001.txt

2001是修订号。

如何使用smb-client从samba-share目录中获取最新文件,我想使用掩码取出所有名称并将其输出到输出,然后执行一些搜索算法以查找最大数量(最新)然后使用smbclient get来获取文件,但这似乎不是最佳解决方案,而且太繁琐了。我想知道是否有其他方法可以做到这一点?

编辑:我在python中找到了另一种方法(只是为了方便)在文本文件或smbclient get ls中捕获STDOUT的输出,然后使用python查找最新文件的名称。现在我无法弄清楚如何将上述命令的输出重定向到文本文件或STDOUT根据逻辑处理它。

有什么办法吗?由于smbclient不允许ioredirection,我仍然坚持使用更新的方法。我已经完成了pysmb但不能依赖它,因为它是一个实验性的库,但是,任何带有pysmb的解决方案也被接受来暂时解决目的。

1 个答案:

答案 0 :(得分:0)

我已经在bash脚本中使用awk解决了此问题。目标:下载最新的csv文件

${SmbCmd} "ls <mask>" 2>/dev/null\
  | awk '{ if ($1 ~ "csv$") print $1 }' | sort | tail -1)

其中$ {SmbCmd}具有要发送到smbclient的所有值,作为smbclient的路径,身份验证方法,smb服务器名称,smb dir ....并以“ --command”结尾长格式

当然,我的csv文件名称的创建日期为“ name_yyyy-mm-dd.csv”。

您可以尝试类似的方法

${SmbCmd} "ls <mask>-*" | awk '{ if ($1 ~ "csv$") print $8$5$6";"$1 }'

但是,月份不是数字