Проверьте, существует ли каталог на удаленном сервере для Perl - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу проверить, существует ли указанный путь или является каталогом на другом сервере сайта в Perl.Мой код такой, как показано ниже.

my $destination_path = "<path>";
my $ssh = "usr/bin/ssh";
my $user_id = getpwuid( $< );
my $site = "<site_name>";
my $host = "rsync.$site.com";

if ($ssh $user_id\@$host [-d $destination_path]){
  print "Is a directory.\n";
}
else{
  print "Is not a directory.\n";
}

Я уверен, что мой код неверен, так как я изменяю код в соответствии с примером bash, который я вижу из другого вопроса, но не знаю, как это исправить.Спасибо всем, кто здесь помогает.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Доступ к удаленной файловой системе через SFTP:

use Net::SFTP::Foreign;

$sftp = Net::SFTP::Foreign->new("rsync.$site.com");
if ($sftp->test_d($destination_path)) {
    "print $destination_path is a directory!\n";
}
0 голосов
/ 19 декабря 2018

[ - это имя команды, и оно должно быть отделено от других слов в командной строке.Так что просто используйте больше пробелов:

$ssh $user\@$host [ -d $destination_path ]

Чтобы фактически выполнить эту команду, вы захотите использовать встроенную функцию system.system возвращает 0, если выполняемая команда выполнена успешно (см. Документацию по ссылке)

if (0 == system("$ssh $user\@$host [ -d $destination_path ]")) {
    print "Is a directory.\n";
} else {
    print "Is not a directory.\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...