【问题标题】:Perl - copying directory from other machine to local machinePerl - 将目录从其他机器复制到本地机器
【发布时间】:2018-08-19 16:10:01
【问题描述】:

我正在尝试编写一个 perl 脚本,它将包含文件的目录从其他机器复制到当前机器。 我可以在 shell 中使用scp 命令,但它需要密码。此外,我的工作区也没有安装以下模块(不幸的是我无法安装它们):

Net::OpenSSH

Net::SSH::Perl

网络::SCP

网络:: FTP

我确实安装了Net::SSH

我的任务是将文件从其他机器复制到当前机器。主要问题是它需要密码才能在 shell 上使用scp。有什么优雅的方法可以解决这个问题吗?

【问题讨论】:

标签: perl ssh scp


【解决方案1】:

优雅的方式是使用公钥认证。

如果你真的需要密码验证,那么除了你列出的那些之外,还有其他模块可以让你自动化它。检查您是否有可用的Net::SSH2ExpectIO::Pty

您也可以使用一些ssh/scp 客户端从命令行或环境变量* 接受密码为plinkpscplftp

另一种可能性是使用实用程序sshpass

(* 请注意,在命令行或环境变量中传递密码是一种非常不安全的做法!)

【讨论】:

  • 公钥认证”是key,我使用rsync进行转账
  • 当大多数文件每次都相同时,用于传输的 Rsync 远远优于 scp,因为 rsync 只复制差异。快多了。特别是在慢行或大和/或许多文件上。 rsync 可以利用 ssh(可能对服务器上的特殊用户)或设置为服务器上的 rsync 守护进程。两者都可以控制哪些目录可用(只读或读写)以及哪些客户端(IP 检查)可以访问。学习 ssh/scp 和 rsync 的复杂性需要付出一些努力,但如果文件传输是您工作的一部分,那么这是非常值得的。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 2018-02-15
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
相关资源
最近更新 更多