首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在远程服务器中使用SFTP删除超过一天的文件

在远程服务器中使用SFTP删除超过一天的文件
EN

Stack Overflow用户
提问于 2016-05-31 20:11:55
回答 1查看 3.2K关注 0票数 1

我想要建立一个cron作业,以便从我只有SFTP访问权限的远程服务器上删除一些文件。我没有任何shell访问权限。连接到远程服务器的最佳方式是什么?我已经安装了sshpass,并做了如下操作:

代码语言:javascript
复制
sshpass -p pass sftp user@host

但是,我如何传递命令来列出旧文件并删除它们?

EN

回答 1

Stack Overflow用户

发布于 2016-06-03 17:06:56

在Perl中:

代码语言:javascript
复制
# untested:
my ($host, $user, $pwd, $dir) = (...);

use Net::SFTP::Foreign;
use Fcntl ':mode';

my $deadline = time - 24 * 60 * 60;

my $sftp = Net::SFTP::Foreign->new($host, user => $user, password => $pwd);
$sftp->setcwd($dir);
my $files = $sftp->ls('.',
# callback function "wanted" is passed a reference to hash with 3 keys for each file:
    # keys: filename, longname (like ls -l) and "a", a Net::SFTP::Foreign::Attributes object containing atime, mtime, permissions and size of file.
    # if true is returned, then the file is passed to the returned Array.
    # a similar function "no_wanted" also exists with the opposite effect.
                      wanted => sub {
                          my $attr = $_[1]->{a};
                          return $attr->mtime < $deadline and
                                 S_ISREG($attr->perm);
                      } ) or die "Unable to retrieve file list";

for my $file (@$files) {
    $sftp->remove($file->{filename})
        or warn "Unable to remove '$file->{filename}'\n";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37545448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档