[英]How to check directory exists in remote machine using Net::SSH2
怎么都在這里......我需要檢查指定路徑上是否存在任何目錄。 例如,如果path是/ root / home /,則檢查目錄ABC是否存在於此路徑上。 我需要,如果沒有這樣的目錄存在然后創建它,否則跳過創建。
我正在使用Net::SSH2
。 我可以使用Net::SSH2
創建和保存文件,但我不知道如何使用遠程服務器中的Net::SSH2
檢查目錄和文件是否存在。
我假設您正在使用sftp
方法創建Net::SSH2::SFTP
對象?
我要做的是調用Net::SSH2::SFTP->mkdir
方法,無論目錄是否存在:嘗試創建已存在的目錄所涉及的開銷可能是微不足道的。
但是,如果必須找到給定目錄是否已就位,則可以使用Net::SSH2::SFTP->opendir
方法,該方法僅在目錄存在時才返回有效的Net::SSH2::Dir
對象。
#!/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));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.