Как проверить, существует ли каталог на удаленном компьютере, используя Net :: SSH2 - PullRequest
0 голосов
/ 02 апреля 2012

Как все здесь .... Мне нужно проверить, существует ли какой-либо каталог по указанному пути.Например, если путь / root / home /, проверьте каталог ABC, если существует по этому пути.Мне нужно, если такой директории не существует, тогда создайте ее, иначе пропустите создание.

Я использую Net::SSH2.Я могу создавать и сохранять файлы, используя Net::SSH2, но я не знаю, как проверить наличие каталогов и файлов, используя Net::SSH2 на удаленном сервере.

Net :: SSH2

Ответы [ 2 ]

1 голос
/ 02 апреля 2012
#!/usr/bin/perl

use strict;
use warnings;
use Net::SSH2;
use Net::SSH2::SFTP;
use Net::SSH2::File;

my $host     = 'sftp.somesite.com';
my $path     = "/root/home/ABC";
my $user     = "user";
my $password = "passwd";

my $ssh = Net::SSH2->new();

die "Can't Connect to $host" unless $ssh->connect($host);

if ($ssh->auth_password($user, $password))
{
   my $sftp = $ssh->sftp();
   $sftp->opendir($path) or $sftp->mkdir($path);
   my $error = $sftp->error;
   print "Error: $error\n" if (!$sftp->opendir($path));
}
1 голос
/ 02 апреля 2012

Я полагаю, вы используете метод sftp для создания объекта Net::SSH2::SFTP?

Я бы вызвал метод Net::SSH2::SFTP->mkdir независимо от того, существует ли каталог: накладные расходы, связанные с попыткой создания уже существующего каталога, вероятно, будут незначительными.

Однако есливы должны выяснить, существует ли данный каталог, вы можете использовать метод Net::SSH2::SFTP->opendir, который вернет действительный объект Net::SSH2::Dir только в том случае, есликаталог существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...