【问题标题】:Ping remote computer from another remote computer and get result back从另一台远程计算机 ping 远程计算机并返回结果
【发布时间】:2013-09-01 03:42:42
【问题描述】:

我试图让一个批处理脚本工作,从而让我的脚本正在运行的计算机 A 让计算机 B ping 计算机 C 并取回我可以输出的错误级别。 目前我正在尝试通过使用 PSEXEC 访问计算机 B 上的命令行并让它 ping C 来做到这一点。当然问题是错误级别总是返回为“0”,因为命令在 B 上成功执行. 但这是我需要的 C 的结果。

SET /P ALTTERM=Please specify another terminal to test from [0**]?
ECHO.
ECHO Running internal ping test from terminal %ALTTERM%...
PSEXEC \\%HOSTNAME%-%ALTTERM% PING %HOSTNAME%-%TERMINAL%
IF ERRORLEVEL 0 SET INTERNALPING=PASS 
IF ERRORLEVEL 1 SET INTERNALPING=FAIL
ECHO.
ECHO Internal ping test %INTERNALPING%

脚本前面设置的主机名和终端的详细信息。 同样重要的是,脚本不显示工作只显示回声线和结果。我用过

/f >nul 2>&1

在脚本的其他地方禁止输出

【问题讨论】:

  • “C 的结果”是什么意思? PING ... 在 B 中执行的结果?
  • 感谢您的回复,是的,这正是我所需要的。需要知道 C 是否响应 B 发送的请求或超时。
  • 我对此的另一个想法是使用令牌来读取 ping 的输出并从中提取我的结果,但我真的不确定实现或如何获得单行 ping 结果通过 PSEXEC 或类似方式使用。

标签: windows networking batch-file


【解决方案1】:

根据Windows IT Pro(参考Microsoft TechNet):

PsExec 显示进程的退出代码并将退出代码返回为 它自己的退出代码。

所以,你的批次应该可以工作了。

将ECHO ErrorLevel=%ERRORLEVEL% 放在PSEXEC ... 之后只是为了确定。

要禁用输出,请将>NUL 2>NUL 或>NUL 2>&1 附加到PSEXEC ... 命令行。没有你使用的/f(你从哪里得到的???)

【讨论】:

  • 明天我会再做一次测试,但我在发布之前已经测试过了,没有任何乐趣。即使终端 C 离线,errorlevel 总是返回为 0。我认为这是因为错误级别反映了 PSEXEC 命令本身已在 B 上运行
  • 嗯,不走运。 ping 结果显示为来自 xx.xx.xx.xx 目标主机无法访问和错误级别 0 的回复。显然这将失败,因此错误级别可能不是执行此操作的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2012-03-10
  • 2013-10-17
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
相关资源
最近更新 更多