问题标签 [perlnetssh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1588 浏览

perl - 有时长时间运行的 ssh 命令会停止打印到标准输出

我一直在使用 Perl::Net::SSH 在我的远程机器上自动运行一些脚本。但是,其中一些脚本需要很长时间才能完成(一两个小时),有时我会停止从它们那里获取数据,而实际上并没有失去连接。

这是我正在使用的代码:

这是我的 %sshParams:

有时,长时间运行的命令之一会随机停止打印/触发 stdout 或 stderr 事件,并且永远不会退出。ssh 连接不会死掉(据我所知),因为$ssh->cmd它仍然处于阻塞状态。

知道如何纠正这种行为吗?

0 投票
3 回答
883 浏览

perl - 使用 NET::SSH:PERL 导出 PATH

我正在编写一个 shell 脚本来自动化我们执行的一些乏味任务。我需要 ssh 到服务器并远程更改 PATH 变量,让该变量持续存在以执行下一个命令。代码如下;

但是 PATH 不会改变。是否有另一种方法来实现这一点,或者我做错了什么。我需要自动化任务,所以不要认为 $ssh->shell 在这里会有所帮助。请建议。


我根据建议进行了更改,一切正常。但是我注意到另一个问题,它在尝试显示环境变量时发生。

现在我使用 Net::SSH::Perl 连接到远程服务器, $ENV{"HOME"} 返回的值是我的主目录的值,而不是远程服务器的值。但是,如果我添加如下命令:

然后显示的用户 ID 是我使用 ssh 连接到远程服务器的用户。我没有安装其他模块,唯一可用的模块是 Net:SSh:perl,因此我不得不使用它。

执行命令的例程

关于为什么会发生这种情况的任何建议?

0 投票
2 回答
676 浏览

perl - Net::SFTP::Foreign - 如果目标目录存在,则 rput 失败(有点)

http://metacpan.org/pod/Net::SFTP::Foreign

如果 $dest 在 $host 上存在,则 rput 的 on_error 总是会触发并且 $sftp->error 是“远程目录 '/whatever' 已经存在”

尽管有错误,rput 继续并递归地复制目录,但在 taget 主机上,它将被复制到 /whatever,而不是/ whatever 上。即我最终得到/whatever/whatever。

如果在 rput 之前完成,这将作为一个简单的解决方法,但我实际上并不想删除目标目录:

有人知道我做错了什么吗?我最好将所有要传输的文件都通配起来,然后执行 foreach $file (@glob_result) { $sftp->put ( yada, yada ) };?这似乎效率低下且容易出错。

0 投票
1 回答
236 浏览

perl - Net::SSH::Expect 1.09 中是否有“collect_exit_code”的等价物

我遇到了这个链接:Exit status code for Expect script called from Bash但它对我没有帮助。当我希望从远程运行的命令中获取退出状态代码时,我遇到了 Net::SSH::Expect 0.08 的 cpan 文档,其中包含“collect_exit_code”和“last_exit_code”方法,这正是我想要的今天使用,但是,运行 1.09 时我无法找到合适的替代品。

我想保持简单,例如:

但是,在没有类似这些方法的情况下,通过 Net Expect 运行命令时,我想不出一种简单的方法来获取退出状态。

我不相信切换到 Fabric 是解决这个问题的方法;这是一个 perl 应用程序,我需要坚持使用 Perl。

提前致谢。

0 投票
1 回答
384 浏览

perl - Net::SSH2 使用公钥进行身份验证

我正在尝试使用Net::SSH2在远程机器上执行命令。但是,我不知道如何使用公钥进行身份验证。文档提到了这种方法:

但是,它需要公钥和私钥。无论如何,我可以只使用公钥进行身份验证吗?谢谢!

0 投票
1 回答
649 浏览

perl - 如何在 Perl 中使用下载的 Net::SSH2 模块?

我已经下载Net-SSH2-0.43了能够使用Net::SSH2Perl 模块。但我不知道在那之后我需要做什么,只包括路径或其他东西。请帮忙。

0 投票
1 回答
621 浏览

perl - 使用带有公钥的 Net::SSH::Perl

我想使用 Perl 访问 AWS 实例。我可以像这样从命令行访问实例:

但我的代码不起作用:

正如我提到的我是这个概念的新手,它可能是一个简单的解决方案,我在网上找不到解决方案,希望你能帮助我。

输出是这样的:

0 投票
1 回答
1076 浏览

perl - 无法从 crontab 运行 perl 脚本以通过 ssh 登录到 Windows 服务器(使用 Net::SSH::Perl)

我有一个 Perl 脚本,它通过Net::SSH::Perl模块远程登录到 Windows 服务器。

如果我从 shell 手动运行脚本,它不会出错。但是,从 crontab 运行时,它可以正确连接到远程 Windows 服务器,但无法登录。

这是脚本:

在服务器 A 上,通过在 csh shell 中运行此脚本,我得到如下输出:

在外壳中,perl test.pl两者sudo perl test.pl都可以正常工作。

但是以 root 用户身份在 cron 中运行此脚本:

注意:我可以在另一个具有相同文件权限、相同用户名和相同密码的 Linux 服务器 B 上执行此操作。不同之处在于,当我在服务器 B 上运行此 Perl 脚本时sudo,我收到此错误:

我没有从 Linux 服务器 A 看到这个错误(我无法通过 cron 连接的那个)

出了什么问题,我该如何解决?

0 投票
1 回答
780 浏览

perl - NET-SSH2 for perl 5.20.2 on windows 2008 r2

我正在尝试安装,NET-SSH2但没有成功。 perl 5.20.2windows 2008r2

C:\Perl>ppm install NET-SSH2
Downloading ActiveState Package Repository packlist...failed 500 Can't connect to ppm4.activestate.com:80
ppm install failed: 找不到任何提供 NET-SSH2 的包

请帮忙

0 投票
1 回答
1285 浏览

perl - Net::SSH::Perl 抛出错误 No kex algorithm at /usr/share/perl5/vendor_perl/Net/SSH/Perl/SSH2.pm 第 92 行

我正在使用 Net::SSH::Perl 连接到 Qlogic 交换机。当它失败并出现以下错误时:

/usr/share/perl5/vendor_perl/Net/SSH/Perl/SSH2.pm 第 92 行没有 kex 算法

代码:

调试输出:

有人可以帮我解决这个问题。相同的代码适用于其他设备,只是这个设备有问题。

谢谢,

加里