如何在这里......我需要检查指定路径上是否存在任何目录。例如 如果路径是/ root / home / 然后检查此路径上是否存在目录ABC。 如果没有这样的目录,我需要创建它,否则跳过创建。
我正在使用Net::SSH2
。我可以使用Net::SSH2
创建和保存文件,但我不知道如何使用远程服务器中的Net::SSH2
检查目录和文件是否存在。
答案 0 :(得分:1)
我假设您使用sftp
方法创建Net::SSH2::SFTP
对象?
无论目录是否存在,我要做的是调用Net::SSH2::SFTP->mkdir
方法:尝试创建已存在的目录所涉及的开销很可能无关紧要。
但是,如果必须查找给定目录是否已就位,则可以使用Net::SSH2::SFTP->opendir
方法,该方法仅在目录中返回有效的Net::SSH2::Dir
对象存在。
答案 1 :(得分:1)
#!/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));
}