У меня есть файл журнала PuTTY, в который записывается вывод всей сессии SSH.Я хочу прочитать этот файл журнала и разбить его содержимое в желаемой форме.В файле журнала есть требуемый шаблон для каждой команды ping, которую я сделал.
Я хочу выводить в файл .CSV, содержащий Date, Time, IP и STATUS в качестве заголовков и данные из файла журнала.Содержимое файла журнала показано ниже:
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.11.19 07:47:18 =~=~=~=~=~=~=~=~=~=~=~=
Using username "admin".
PING 172.27.1.4 (172.27.1.4) 56(84) bytes of data.
64 bytes from 172.27.1.4: icmp_req=1 ttl=64 time=1.22 ms
64 bytes from 172.27.1.4: icmp_req=2 ttl=64 time=1.05 ms
--- 172.27.1.4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 1.058/1.139/1.221/0.088 ms
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.11.19 07:47:22 =~=~=~=~=~=~=~=~=~=~=~=
Using username "admin".
PING 172.27.1.5 (172.27.1.5) 56(84) bytes of data.
64 bytes from 172.27.1.5: icmp_req=1 ttl=64 time=1.08 ms
64 bytes from 172.27.1.5: icmp_req=2 ttl=64 time=1.04 ms
--- 172.27.1.5 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 1.041/1.061/1.081/0.020 ms
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2018.11.19 07:47:26 =~=~=~=~=~=~=~=~=~=~=~=
Using username "admin".
PING 172.27.1.6 (172.27.1.6) 56(84) bytes of data.
From 172.27.1.6 icmp_seq=1 Destination Host Unreachable
From 172.27.1.6 icmp_seq=2 Destination Host Unreachable
--- 172.27.1.6 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1004ms pipe 2
Для каждого IP-адреса все данные будут найдены в =~=~=~
и ---
.Если он обнаружил TTL, то состояние будет исправным, а «Целевой хост недоступен» или «истекло время ожидания запроса», тогда состояние будет «Нездорово».
Образец VBScript записывается, но в нем содержится только первое значение файла журнала.
Set fso = CreateObject("Scripting.FileSystemObject")
Set f=fso.opentextfile("log.txt",1)
a = f.ReadAll
Set r = New RegExp
r.Global = True
r.Multiline = True
r.IgnoreCase = True
r.Pattern = "=~=~=~=~=~=~=~=~=~=~=~= PuTTY log ((.|\n)*?)---"
Set Matches = r.Execute(a)
If Matches.Count > 0 Then Data = Matches(0).SubMatches(0)
MsgBox Data
WriteFileText "Test.txt", Data
f.Close
Function WriteFileText(sFile, Data)
Dim objFSO, oTS, sText
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oTS = objFSO.CreateTextFile(sFile, 2)
oTS.WriteLine Data
oTS.Close
Set oTS = Nothing
Set objFSO = Nothing
End Function