如何将文件从主机复制到创建的目录?

时间:2015-01-20 13:17:30

标签: perl scp

我正在尝试将文件从主机复制到创建的目录。这是我的剧本:

use strict;
use Getopt::Long;
use Net::SCP::Expect;

my $filename;
GetOptions(
    "file=s" => \$filename
);
my $src_path="/";
my $directory;
open(INBOX, "<$filename") or die "Can't open $filename\n";

while(<INBOX>) {
    chomp;
    my @arr = split(/:/);
    my $host=$arr[0];
    my $username=$arr[1];
    my $password=$arr[2];

    sub main {
        my $directory = "temp";
        unless(-e $directory or mkdir $directory) {
            die "Unable to create $directory";
        }
    }

    main();
    print "Copying from $host \n";
    my $scpe = Net::SCP::Expect->new(
        host     => $host,
        user     => $username,
        password => $password,
    );
    $scpe->scp($host . ":" . $src_path, $directory);

但是在这里我无法将文件从主机移动或复制到名为temp的创建目录。你能在Pe​​rl这方面帮助我吗?

1 个答案:

答案 0 :(得分:1)

你在这里做范围很奇怪:

在你的sub中,这个 - 很奇怪 - 被称为“main”,你声明一个本地范围的变量$目录并为其指定“temp”。

然而,在第10行的主程序中声明的变量$目录保持为空 - 但这是在scp中使用的那个。

我建议改变这个

sub main {
    my $directory = "temp";
    unless(-e $directory or mkdir $directory) {
        die "Unable to create $directory";
    }
}
main();

进入那个:

$directory = "temp";
unless(-e $directory or mkdir $directory) {
    die "Unable to create $directory";
}