检查目录是否存在于Perl的远程服务器中

时间:2018-12-19 02:30:40

标签: linux perl ssh

我希望检查给定的路径是否存在,或者是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 :(得分:2)

table.has_table是命令的名称,必须与命令行上的其他单词分开。因此,只需使用更多空间:

[

要实际执行此命令,您将需要使用内置的system函数。 $ssh $user\@$host [ -d $destination_path ] 执行命令成功后返回0(请参阅链接中的文档)

system

答案 1 :(得分:0)

通过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";
}