【问题标题】:How can I ssh into a remote host with Perl?如何使用 Perl SSH 连接到远程主机?
【发布时间】:2009-07-28 22:00:06
【问题描述】:

我想编写一个 Perl 脚本,它将 ssh 连接到远程主机,在远程主机上运行一些命令之前提示输入密码,并在本地 Perl 脚本中解析输出。对此有任何帮助或指示吗?谢谢!

【问题讨论】:

标签: perl ssh


【解决方案1】:

有Net-SSH-Perl
usage 上的一些 notes。


如果您对该模块感到沮丧并需要一个简单的出路,
您可以直接在 shell 上调用 SSH。

perl -e {`ssh user@server "command"`}

应该可以...


我希望你打算让 SSH 使用它的密码,而不是自己实现一些“安全”。
也可以考虑public key authentication。

【讨论】:

  • 我首先尝试使用 Net-SSH-Perl。我一直遇到主机名:已建立连接。主机名:发送密钥交换初始化(KEXINIT),等待响应。没有找到匹配的comp:client zlib server none,zlib@openssh.com at /.../perl/5.6.1/Net/SSH/Perl/SSH2.pm line 87 在我弄清楚之前,您的第二个选项适用于我,是的,在我输入 cmd 之前它确实要求输入密码(如我所愿)。谢谢您的帮助!最后,了解如何解决 zlib 服务器错误将满足我的好奇心 :)
  • @Iceman 好像客户端想使用压缩,而服务器不支持。因此,您可以在构造函数调用中尝试压缩 => 0。见search.cpan.org/dist/Net-SSH-Perl/lib/Net/SSH/…
【解决方案2】:

我认为您想要的工具可能不是 Perl,而是 Expect。它专为以编程方式与命令行软件交互而设计。它是用Tcl 编写的,这是一种比 Perl 稍微简单一些的语言,但大体上属于同一家族并且不难学习。

【讨论】:

  • 感谢 Norman,我已经在 Expect 中使用了它。但出于某种原因,我必须在 Perl 中使用它……
  • Perl 模块 Expect.pm 的文档有一个有趣的声明,说(类似于)作者想让 Tcl/Expect 对程序员可用,而不使他们受制于 Tcl。
  • 而且,虽然Expect 是用Tcl 编写的,但是如果你不需要花哨的话,Expect 甚至比Tcl 还要简单。 Perl 也有一个 Expect 模块,但我总是喜欢原来的模块,因为对于我所有的教授来说,它对于毒害 wtmp 非常有用,他们认为 wtmp 是检查谁在完成工作的有用工具。 :)
猜你喜欢
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多