【发布时间】:2020-09-17 08:26:15
【问题描述】:
我有一个脚本,它使用 Perl 模块 Net::OpenSSH 建立与远程服务器的连接,并将文件从本地服务器传输到远程机器。这工作得很好。
...
my $ssh = ConnectToServer( $host, $user, $password );
my $remote_dir = "/home/shared/some/path/"
if ( $ssh->system('mkdir', '-p', $remote_dir) ) {
print "Directory $remote_dir created!\n";
} else {
print "Can't create $remote_dir on $host : ".$ssh->error."\n";
}
$ssh->scp_put({glob => 1}, "/home/shared/Test_Vinod/LOG/*.zip", $remote_dir)
or die "scp failed: " . $ssh->error;
undef $ssh;
sub ConnectToServer {
my ( $host, $user, $passwd ) = @_;
my $ssh = Net::OpenSSH->new($host,
user => $user,
password => $passwd,
master_opts => [-o => "StrictHostKeyChecking=no"]
);
$ssh->error and die "Couldn't establish SSH connection: ". $ssh->error;
return $ssh;
}
但每当我执行此脚本时,我都会收到消息:
Directory /home/shared/some/path/ created!
我在if ($ssh->system('mkdir', '-p', $remote_dir)) {线上的理解是:
如果$remote_dir 不存在,则在远程机器上递归创建它。
但是即使目录已经存在,$ssh->system('mkdir', '-p', $remote_dir) 的值如何变成1。
也许我对-p 标志感到困惑。专家 cmets 预计。谢谢。
【问题讨论】: