Пакетный анализ вывода Tracert

Я хотел бы попросить помощи с выводом tracert в Windows, т.е. у меня есть этот вывод:

Tracing route to Y.Y.Y.Y over a maximum of 30 hops

1     1 ms     1 ms     1 ms  X.X.X.X 
2   103 ms    71 ms    22 ms  X.X.X.X 
3    35 ms    51 ms    35 ms  X.X.X.X 
....

и я хотел бы создать файл, который содержит только X.X.X.X или в качестве промежуточного шага, чтобы добраться туда, только строки трассировщика, которые фактически содержат IP-адреса. То есть:

X.X.X.X
X.X.X.X
X.X.X.X

Я пробовал это через пакетный файл:

for /f "tokens=8" %%a in ('tracert -4 -d 8.8.8.8^|find "ms"') do (
    @echo %%a >D:\panagos\desktop\ips.txt
)

но вместо желаемого результата я получаю только:

Y.Y.Y.Y

Я также пытался вызывать двоичные файлы из cygwin, чтобы сделать это, то есть:

D:\path\to\slash\bin\awk '{ print $8 }' filein > fileout

но это тоже не работает. Кто-нибудь может помочь? Заранее спасибо.


person onlyf    schedule 21.08.2016    source источник
comment
but that doesnt work either что именно не так? в Linux я попробовал awk '/ ms/ {print $8}' filein, который должен дать ожидаемый результат.   -  person Sundeep    schedule 21.08.2016


Ответы (2)


Используйте следующий пакетный файл:

GetIPs.cmd:

@echo off
rem skip 2 header lines
rem ip address is the 8th token
for /f "skip=2 tokens=8" %%d in ('tracert -4 -d 8.8.8.8') do (
  echo %%d
  )>>ips.txt
endlocal

Пример:

F:\test>tracert -4 -d 8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops

  1    <1 ms    <1 ms    <1 ms  192.168.42.129
  2     *        *        *     Request timed out.
  3    53 ms    48 ms    48 ms  10.248.29.129
  4    46 ms    48 ms    48 ms  10.247.82.25
  5    55 ms    48 ms    48 ms  10.247.82.6
  6    55 ms    48 ms    48 ms  10.247.82.9
  7    46 ms    48 ms    48 ms  10.247.82.18
  8    55 ms    48 ms    48 ms  87.237.20.236
  9    56 ms    59 ms    48 ms  87.237.20.85
 10    56 ms    58 ms    47 ms  74.125.52.216
 11    55 ms    48 ms    51 ms  216.239.41.179
 12    58 ms    48 ms    59 ms  216.239.57.83
 13    58 ms    59 ms    48 ms  8.8.8.8

Trace complete.

F:\test>GetIPs

F:\test>type ips.txt
192.168.42.129
10.248.29.129
10.247.82.25
10.247.82.6
10.247.82.9
10.247.82.18
87.237.20.236
87.237.20.85
74.125.52.216
216.239.41.179
216.239.57.83
8.8.8.8

Дальнейшее чтение

person DavidPostill    schedule 21.08.2016

Прочитайте перенаправление:

command > filename        Redirect command output to a file
command >> filename       APPEND into a file

Используйте либо

type NUL >D:\panagos\desktop\ips.txt
for /f "tokens=8" %%a in ('tracert -4 -d 8.8.8.8^|find "ms"') do (
    @echo %%a >>D:\panagos\desktop\ips.txt
)

или лучше)

@echo OFF
>D:\panagos\desktop\ips.txt (
    for /f "tokens=8" %%a in ('tracert -4 -d 8.8.8.8^|find "ms"') do (
        echo %%a
    )
)

Также обратите внимание, что ваш скрипт скрывает недоступные хосты, обратите внимание, что 12-й прыжок в следующем примере имеет только 7 токенов:

==> tracert -d 8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops

 …
 11    36 ms    44 ms    36 ms  108.170.234.149
 12     *        *        *     Request timed out.
 13    36 ms    36 ms    35 ms  8.8.8.8

Trace complete.
person JosefZ    schedule 21.08.2016