问题标签 [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.
perl - 有时长时间运行的 ssh 命令会停止打印到标准输出
我一直在使用 Perl::Net::SSH 在我的远程机器上自动运行一些脚本。但是,其中一些脚本需要很长时间才能完成(一两个小时),有时我会停止从它们那里获取数据,而实际上并没有失去连接。
这是我正在使用的代码:
这是我的 %sshParams:
有时,长时间运行的命令之一会随机停止打印/触发 stdout 或 stderr 事件,并且永远不会退出。ssh 连接不会死掉(据我所知),因为$ssh->cmd
它仍然处于阻塞状态。
知道如何纠正这种行为吗?
perl - 使用 NET::SSH:PERL 导出 PATH
我正在编写一个 shell 脚本来自动化我们执行的一些乏味任务。我需要 ssh 到服务器并远程更改 PATH 变量,让该变量持续存在以执行下一个命令。代码如下;
但是 PATH 不会改变。是否有另一种方法来实现这一点,或者我做错了什么。我需要自动化任务,所以不要认为 $ssh->shell 在这里会有所帮助。请建议。
我根据建议进行了更改,一切正常。但是我注意到另一个问题,它在尝试显示环境变量时发生。
现在我使用 Net::SSH::Perl 连接到远程服务器, $ENV{"HOME"} 返回的值是我的主目录的值,而不是远程服务器的值。但是,如果我添加如下命令:
然后显示的用户 ID 是我使用 ssh 连接到远程服务器的用户。我没有安装其他模块,唯一可用的模块是 Net:SSh:perl,因此我不得不使用它。
执行命令的例程
关于为什么会发生这种情况的任何建议?
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 ) };?这似乎效率低下且容易出错。
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。
提前致谢。
perl - Net::SSH2 使用公钥进行身份验证
我正在尝试使用Net::SSH2在远程机器上执行命令。但是,我不知道如何使用公钥进行身份验证。文档提到了这种方法:
但是,它需要公钥和私钥。无论如何,我可以只使用公钥进行身份验证吗?谢谢!
perl - 如何在 Perl 中使用下载的 Net::SSH2 模块?
我已经下载Net-SSH2-0.43
了能够使用Net::SSH2
Perl 模块。但我不知道在那之后我需要做什么,只包括路径或其他东西。请帮忙。
perl - 使用带有公钥的 Net::SSH::Perl
我想使用 Perl 访问 AWS 实例。我可以像这样从命令行访问实例:
但我的代码不起作用:
正如我提到的我是这个概念的新手,它可能是一个简单的解决方案,我在网上找不到解决方案,希望你能帮助我。
输出是这样的:
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 连接的那个)
出了什么问题,我该如何解决?
perl - NET-SSH2 for perl 5.20.2 on windows 2008 r2
我正在尝试安装,NET-SSH2
但没有成功。 perl 5.20.2
windows 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 的包
请帮忙
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 算法
代码:
调试输出:
有人可以帮我解决这个问题。相同的代码适用于其他设备,只是这个设备有问题。
谢谢,
加里