perl Net::SSH2 通道执行超时
Posted
技术标签:
【中文标题】perl Net::SSH2 通道执行超时【英文标题】:perl Net::SSH2 channel exec timeout 【发布时间】:2011-04-08 06:49:36 【问题描述】:我正在使用 Net::SSH2 在远程主机上运行慢速管理命令。
Perl 5.8.8 libssh2 1.2.2
我在频道 exec 上不断收到奇怪的“超时”。
$chan->exec( $command );
正在执行的命令通常运行长达一个小时(60 分钟),在执行期间输出最少。
短命令可以正常工作。 大约一分钟后,输出最小的慢速返回 1。
我已将套接字设置为阻塞并将超时设置为 60 分钟等等......没有任何帮助。
有什么想法吗?
【问题讨论】:
【参考方案1】:在 Net::SSH2 中使用“nohup command &”运行命令,然后通过检查生成程序的状态来保持连接。
有关更多信息,请参阅以下主题:
http://www.perlmonks.org/index.pl?node_id=868377
【讨论】:
我希望通过 libssh 或套接字上的最坏情况来解决这个问题。被调用应用程序的工作方式,我不能依赖这种进程监控。 它不需要进行状态检查,只要你通过套接字推送东西就可以了,或者你可以修改执行的命令以每隔几秒输出一些东西,或者使用线程或使用 fork(),此时我只是在扔东西。以上是关于perl Net::SSH2 通道执行超时的主要内容,如果未能解决你的问题,请参考以下文章
需要通过 SSH1 和 SSH2 从 Perl 脚本连接机器