gpt4 book ai didi

batch-file - 如何使用批处理脚本ping多台服务器并返回IP地址和主机名?

转载 作者:行者123 更新时间:2023-12-04 13:06:08 24 4
gpt4 key购买 nike

所以我必须使用 仅批量 为了这。基本上,服务器 HOSTNAMES 都列在一个 txt 文件中。我使用以下代码 ping 所有服务器并将其结果显示在 txtfile 中。

For /f %%i in (testservers.txt) do ping -n 1 %%i >>pingtest.txt

以上 ping 所有服务器。现在,我想在单独的文件中输出 IP 地址和主机名称。我怎样才能做到这一点?
我知道我可以运行 for 循环来搜索诸如“TTL”之类的词,然后查找第三个 token (用于 IP)和诸如“PINGING”之类的词用于第二个 token (HOSTNAME)。但我有错误,无法正确显示。我想在不同的文件中输出 IP 和主机名的原因是要列出 DOWN 和 UP 服务器。

帮助将不胜感激。 :)

编辑:只是为了不混淆,想让你们知道有 3 个不同的文件,testservers.txt 中有 HOSTNAMES,pingtest.txt 有 ping 结果,result.txt 将有 IP 和主机名他们当前的状态为 DOWN 或 UP。

最佳答案

好吧,很遗憾您也没有发布自己的代码,以便对其进行更正。
无论如何,这是我自己的解决方案:

@echo off
setlocal enabledelayedexpansion

set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%
for /f %%i in (testservers.txt) do (
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=1,2,3" %%x in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
if %%x==Pinging set SERVER_ADDRESS=%%y
if %%x==Reply set SERVER_ADDRESS=%%z
if %%x==SERVER_IS_UP (set SERVER_STATE=UP) else (set SERVER_STATE=DOWN)
)
echo %%i [!SERVER_ADDRESS::=!] is !SERVER_STATE! >>%OUTPUT_FILE%
)

外循环遍历主机,内循环解析 ping输出。前两个 if语句处理 IP 地址解析的两种可能情况:
  • 主机名是主机 IP 地址。
  • 主机 IP 地址可以从其名称解析。

  • 如果无法解析主机 IP 地址,则将该地址设置为“ADDRESS N/A”。

    希望这可以帮助。

    关于batch-file - 如何使用批处理脚本ping多台服务器并返回IP地址和主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408673/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com