Perl Try :: Tiny陷入循环

时间:2015-02-23 16:25:49

标签: perl try-catch

我正在使用Try :: Tiny语句来避免失败,如果我能够a到主机。但似乎rsh正在无限期地重审。

在这种特殊情况下,Host2发生故障,代码只是反复尝试联系Host2,直到我用CTRL + C取消执行。我期待的是Host2 rsh命令失败,以及脚本移动到Host3。

知道为什么这不起作用以及我怎么能以不同的方式做到这一点?

@Win_Clients = ("Host1","Host2","Host2");

foreach $Win_Client (@Win_Clients){
    try {
        @mem= rsh ($Win_Client, "wmic memphysical get MaxCapacity");
        print "host=$Win_Client, mem=$mem";
    };
}

1 个答案:

答案 0 :(得分:0)

我认为您最好的解决方案是不使用rsh来运行wmic,而是使用内置的远程访问机制/node

C:\Users\ME>wmic /node:localhost memphysical get MaxCapacity
MaxCapacity
4194304


C:\Users\ME>wmic /node:narf memphysical get MaxCapacity
Node - narf
ERROR:
Description = The RPC server is unavailable.

然后您无需执行任何操作rshtry。您可以通过“常规方式”简单地捕获错误级别。 (perl客户端中$?

C:\Users\ME>wmic /?

[global switches] <command>

The following global switches are available:
/NAMESPACE           Path for the namespace the alias operate against.
/ROLE                Path for the role containing the alias definitions.
/NODE                Servers the alias will operate against.