Распечатайте удаленные серверы FILENAME, MTIME на экране, используя Net :: SFTP :: Foreign Perl Module - PullRequest
1 голос
/ 30 октября 2019

Я пишу код, который должен получить файл с удаленного сервера с использованием Net::SFTP::Foreign модуля Perl.

Вот сценарий.

my $sftp = Net::SFTP::Foreign->new(
                host=>$host, 
                user=>$user, 
                password=>$pass
            );
$sftp->die_on_error("Unable to establish SFTP connection");

$sftp->setcwd($path) or die "unable to change cwd: " . $sftp->error;

my @files = $sftp->ls($path);
print Dumper(\@files);

Подключение к удаленному серверу работает нормально. Когда я печатаю $sftp->status, даю 0 в качестве значения, которое означает его успех.

Даже в Dumper я мог видеть файлы с удаленного сервера в следующем формате.

$VAR1 = [
          {
            'filename' => 'script.py',
            'a' => bless( {
                            'perm' => 33204,
                            'size' => 25,
                            'gid' => 1001,
                            'flags' => 15,
                            'mtime' => 1571147796,
                            'uid' => 1001,
                            'atime' => 1571655805
                          }, 'Net::SFTP::Foreign::Attributes' ),
            'longname' => '-rw-rw-r--    1 test_vk  test_vk        25 Oct 15 13:56 script.py'
          },
          {
            'a' => bless( {
                            'flags' => 15,
                            'mtime' => 1571417934,
                            'atime' => 1571655769,
                            'uid' => 1001,
                            'gid' => 1001,
                            'size' => 369,
                            'perm' => 33204
                          }, 'Net::SFTP::Foreign::Attributes' ),
            'longname' => '-rw-rw-r--    1 test_vk  test_vk       369 Oct 18 16:58 script.pl',
            'filename' => 'script.pl'
          },
          {
            'longname' => '-rw-r--r--    1 root     root            0 Oct 30 04:32 script123.pl',
            'a' => bless( {
                            'gid' => 0,
                            'size' => 0,
                            'perm' => 33188,
                            'flags' => 15,
                            'mtime' => 1572409960,
                            'uid' => 0,
                            'atime' => 1572409960
                          }, 'Net::SFTP::Foreign::Attributes' ),
            'filename' => 'script123.pl'
          },
          {
        ];

ЧтоМне нужно это вынести время модификации каждого файла. Это должно быть напечатано как "filename, modification_time". Как я могу взять эти значения из Dumper.

1 Ответ

3 голосов
/ 30 октября 2019

Согласно документации Net :: SFTP :: Foreign , существует метод stat, который можно вызвать для получения Net :: SFTP :: Foreign :: Attributes instance:

my $attrs = $sftp->stat($path_or_fh)

А затем попросите mtime или тот, который вам нужен.

...