gpt4 book ai didi

perl - 文件处理

转载 作者:行者123 更新时间:2023-12-02 02:32:39 26 4
gpt4 key购买 nike

我在目录/src/中有主机上的文件列表。该目录有更多的子目录。现在这个目录在安装后被复制到远程机器上。现在文件已预设在目录/dst 中的远程计算机中。

例子。如果我有/src/a/f1,/src/b/f2我将在远程机器上/dst/a/f1 ,/dst/b/f2

现在我只有主机目录、主机文件的信息。使用此信息如何在 perl 中使用 ssh 访问远程计算机上的文件。我将不得不 cd 到/dst 并从那里读取文件。如何执行此 cd 并在一个 ssh 命令中读取。

谢谢。

最佳答案

如果您想在不委托(delegate)给 /usr/bin/ssh 的情况下完成所有操作,请查看 Net::SSH2 , 和 File::Spec

你需要 scp_get ( remote [, local ] )

它看起来像这样。

use File::Spec ();
use Net::SSH2 ();
my ( $vol, $dir, $file ) = File::Spec::splitpath( $path );
my @dirs = File::Spec::splitdir( $dir );

## Change the root dir
$dirs[0] = 'dst'; # new_root_dir

my $new_remote_path = File::Spec::catfile( @dirs, $file );

## Almost right from Net::SSH2 SYNOPSIS
my $ssh2 = Net::SSH2->new();
$ssh2->connect('example.com') or die $!;
if ($ssh2->auth_keyboard('fizban')) {

my $sftp = $ssh2->sftp();

my $fh = $sftp->open('/etc/passwd') or die;
print $_ while <$fh>;

## or $ssh2->scp_get( $new_remote_path );
}

关于perl - 文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com