1

我需要从多个源 IP ping 一个 IP,并将结果写入文件或 HTML 页面以获取结果。我需要从所有 4 个 ping 中获取结果,包括 TTL 以及 4 个 ping 中有多少被丢弃以及 ping 时间。

我知道对于 IPv6,您可以在 ping 命令中使用 -S 触发器来指定源 IP,但是对于 IPv4 环境,您如何做到这一点。

设置:

Windows 2003 服务器 R2 标准 x64。.txt 文件包含我想用作源 IP 的 85 个 IPv4 地址 1 个目标 IPv4 地址将从一台中央服务器运行 将以管理员身份登录中央服务器

所需结果:显示按源 IP 结果分组的结果的 HTML 页面,包括所有 4 个 ping 回复时间、TTL、发送的总数据包、接收的总数据包和平均 ping 时间(以毫秒为单位)

现在让我把事情复杂一点。我所在的环境不允许我安装 Windows 2003 Server R2 标准 x64 正常安装中不包含的任何其他软件。自从编写 .bat 文件以来已经有很多年了,我对 .bat 文件的记忆力仍然很弱。所有 IP 地址都是 IPv4。虽然我确实有所有这些服务器的 FQDN,但我需要使用 IP(出于某种原因)

我有以下内容来创建所需的页面并从一个系统 ping 到多个系统,但剩下的就是我遇到问题的地方,因为我需要从多个到一个 ping,我的脚本给我的唯一结果是格式正确的 html 页面但是它只说 processing=done 我哪里出错了……请帮忙……</p>

谢谢

---编辑--- 通过将 ping 更改为 ping.exe 并将 %%i 放在引号中 - “%%i”现在我得到了结果,但不是我希望的好格式。它以 32 字节日期的 pining 127.0.0.1 格式给出结果:从 .... 回复,就好像只是输出到文本文件一样。我想做的是以表格格式显示它。已对以下代码进行了更改。

@echo off
echo ^<HTML^>^<HEAD^><TITLE^>SERVER PING INFO^</TITLE^>^</HEAD^> >>ping-results.html
echo ^<BODY GBCOLOR=#FFFFFF” TEXT=”#000000” LINK+#0000FF” VLINK=#800080”^> >>ping-results.html
echo ^<p align="center"^>^<table border="1" width="600"^> >>ping-results.html
echo ^<tr^>^<td^>^<B^>ping results^</td^> >> ping-results.html
for /F %%i in (c:\ping-results\serverIP.txt) do (
    echo Processing %%i...
    ping.exe "%%i" > "c:\ping-results\%%i.html" /format:htable.xsl
    echo ^<tr^>^<td^>%%i^</td^> >> ping-results.html
    echo ^<td^>^<a href="c:\ping-results\%%i.html"^>Results^</a^>^</td^> >> ping-results.html
    echo ^</tr^> >> ping-results.html
)
    echo ^<p align="center"^>^<b^>^<font size="+1" color="Red"^>^<BR^>Completed at >> ping-results.html time /T >> ping-results.html
echo - on >> ping-results.html
date /T >> ping-results.html
echo ^</font^>^</b^>^<BR^>^</p^> >> ping-results.html
echo.
echo DONE!!
4

1 回答 1

2

最好在构建 html 文件之前运行 ping 命令吗?

像这样(显然将 127.0.0.1 更改为您的服务器#)

@echo off
setlocal enabledelayedexpansion enableextensions
set count=0
for /f "delims=" %%a in ('ping -n 4 127.0.0.1') do (
    set /a count=!count!+1
    set pingrspn!count!=%%a
)
echo Response1: !pingrspn4!
echo Response2: !pingrspn5!
echo Response3: !pingrspn6!
echo Response4: !pingrspn7!

现在您可以在“构建 html 文件”脚本中使用 vars: pingrspn4-pingrspn7。

不错的主意,虽然在动态构建一个 html,我喜欢它。

关于 ping 行上的 /format 选项的一个问题,我注意到 ping 没有 /format 参数,那么 /format 选项是否来自重定向符号?

[编辑] 所以我调整了您的文件(您缺少一些 html 代码)以格式化结果(server.html)页面

    :: setlocal options
        setlocal enabledelayedexpansion enableextensions
        set count=0
        for /f "delims=" %%a in ('ping -n 4 127.0.0.1') do (
            set /a count=!count!+1
            set pingrspn!count!=%%a
        )
        echo Response1: !pingrspn4!
        echo Response2: !pingrspn5!
        echo Response3: !pingrspn6!
        echo Response4: !pingrspn7!
:: write results file       
echo ^<HTML^>^<HEAD^><TITLE^>SERVER PING INFO^</TITLE^>^</HEAD^> >>ping-results.html 
echo ^<BODY GBCOLOR=#FFFFFF” TEXT=”#000000” LINK+#0000FF” VLINK=#800080”^> >>ping-results.html 
echo ^<p align="center"^>^<table border="1" width="600"^> >>ping-results.html 
echo ^<tr^>^<td^>^<B^>ping results^</td^> >> ping-results.html 
for /F %%i in (serverIP.txt) do (    
echo Processing %%i...     
 :: already ran the ping command, so rem it out
rem ping.exe "%%i" > "%%i.html" /format:htable.xsl   
:: write %%i.html
echo ^<HTML^>^<HEAD^><TITLE^>Individual PING^</TITLE^>^</HEAD^> >%%i.html 
echo ^<BODY GBCOLOR=#FFFFFF” TEXT=”#000000” LINK+#0000FF” VLINK=#800080”^> >>%%i.html 
echo ^<p align="center"^>^<table border="1" width="600"^> >>%%i.html 
echo ^<tr^>^<td^>^<B^>results^</td^> >> %%i.html  
        echo ^<tr^>^<td^>!pingrspn4! ^<^/td^>^<^/tr^> >> %%i.html 
        echo ^<tr^>^<td^>!pingrspn5! ^<^/td^>^<^/tr^>  >> %%i.html
        echo ^<tr^>^<td^>!pingrspn6! ^<^/td^>^<^/tr^>  >> %%i.html
        echo ^<tr^>^<td^>!pingrspn7! ^<^/td^>^<^/tr^>  >> %%i.html
        echo ^<^/body^> ^<^/table^> ^<^/html^> >> %%i.html
 echo ^<tr^>^<td^>%%i^</td^> >> ping-results.html     
 echo ^<td^>^<a href="%%i.html"^>Results^</a^>^</td^> >> ping-results.html     
 echo ^</tr^> >> ping-results.html )     
 echo ^<p align="center"^>^<b^>^<font size="+1" color="Red"^>^<BR^>Completed at >> ping-results.html 
 time /T >> ping-results.html 
 echo - on >> ping-results.html 
 date /T >> ping-results.html 
 echo ^</font^>^</b^>^<BR^>^</p^> >> ping-results.html 
 echo ^<^/body^> ^<^/table^> ^<^/html^> >>  ping-results.html 
 echo DONE!!
 ping-results.html
于 2012-04-20T20:24:56.497 回答