簡體   English   中英

如何使用Net :: SSH2檢查遠程機器中是否存在目錄

[英]How to check directory exists in remote machine using Net::SSH2

怎么都在這里......我需要檢查指定路徑上是否存在任何目錄。 例如,如果path是/ root / home /,則檢查目錄ABC是否存在於此路徑上。 我需要,如果沒有這樣的目錄存在然后創建它,否則跳過創建。

我正在使用Net::SSH2 我可以使用Net::SSH2創建和保存文件,但我不知道如何使用遠程服務器中的Net::SSH2檢查目錄和文件是否存在。

網:: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM