所以我只能为此使用批处理.基本上,服务器HOSTNAMES都列在txt文件中.我使用以下代码ping所有服务器并在txtfile中显示其结果.
For /f %%i in (testservers.txt) do ping -n 1 %%i >>pingtest.txt
Run Code Online (Sandbox Code Playgroud)
以上针对所有服务器.现在,我想在一个单独的文件中输出IP地址和主机名.我怎样才能做到这一点?我知道我可以运行for循环搜索"TTL"之类的单词,然后查找第三个标记(对于IP)和第二个标记(HOSTNAME)的"PINGING"等单词.但我有错误,无法正确显示它.我想在不同的文件中输出IP和主机名的原因是为了列出DOWN和UP服务器.
帮助将不胜感激.:)
编辑:就这样它不是混乱,想让你们知道有3个不同的文件,testservers.txt中有HOSTNAMES,pingtest.txt有ping结果,而result.txt将有IP和主机名一起他们当前的状态为DOWN或UP.
Eit*_*n T 19
好吧,不幸的是你没有发布你自己的代码,所以可以纠正它.
无论如何,这是我自己的解决方案:
@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%
)
Run Code Online (Sandbox Code Playgroud)
外循环遍历主机,内循环解析ping输出.前两个if语句处理IP地址解析的两种可能情况:
如果无法解析主机IP地址,则将地址设置为"ADDRESS N/A".
希望这可以帮助.