Что нового

Система сравнения файлов с выводом разницы данных. GUI

vld-k

Новичок
Сообщения
39
Репутация
0
Добрый день.
Возникла острая необходимость анализировать полученные данные, с целю обнаружение необработанных хостов.
Есть скрипт, который выполняет процедуры по указанному списку IP адресов (текстовый файл), результат выполнения заносит в иной текстовый файл в формате: "IP<tab>Hostname<tab>status", если подключение не произошло, адрес пропускается и его не видно во втором файле-отчета.

Чтобы понять какие адреса были пропущены, нужно сравнить заданные адреса компьютеров с теми что попали во второй список (файл-отчета), а разницу -между файлами записать в третий файл (необработанные хосты.)

Пример:
первый файл
10.10.10.1
10.10.10.2
10.10.10.3
10.10.10.4
10.10.10.5
Есть второй текстовый файл в котором уже три колонки и указанные обработанные хосты:
10.10.10.5 comp-5 done
10.10.10.3 comp-3 done
10.10.10.4 comp-4 done
Адреса, которые не попали во второй файл, необходимо вывести в третий.

10.10.10.1
10.10.10.2
Вот сделал форму:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 222, 437, 345, 472)
$Input_data = GUICtrlCreateInput("Input_data", 8, 56, 121, 21)
$Output_data = GUICtrlCreateInput("Output_data", 8, 128, 121, 21)
$Button1 = GUICtrlCreateButton("Обзор", 136, 56, 75, 25)
$Button2 = GUICtrlCreateButton("Обзор", 136, 128, 75, 25)
$Button3 = GUICtrlCreateButton("Выполнить расчет", 8, 272, 203, 25)
$Label1 = GUICtrlCreateLabel("Указать список адресов", 8, 24, 131, 17)
$Label2 = GUICtrlCreateLabel("Указать результат вывода", 8, 104, 142, 17)
$Label3 = GUICtrlCreateLabel("Записать разницу в файл", 8, 200, 134, 17)
$result = GUICtrlCreateInput("result", 8, 224, 121, 21)
$Button4 = GUICtrlCreateButton("Обзор", 136, 224, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
vld-k,
Объясните подробнее, что Вы хотите сделать. Например, я (и думаю, что не только я) ничего не понял.
 
Автор
V

vld-k

Новичок
Сообщения
39
Репутация
0
madmasles сказал(а):
vld-k,
Объясните подробнее, что Вы хотите сделать. Например, я (и думаю, что не только я) ничего не понял.
Извините, в описании темы второй споллер, не понятно почему не полностью сохранился, я исправил.
Есть скрипт, которые выполняет процедуры по указанному списку IP адресов (текстовый файл), результат выполнения заносит в иной текстовый файл в формате: "IP<tab>Hostname<tab>status", если подключение не произошло, адрес пропускается и его не видно во втором файле-отчета.
Чтобы понять какие адреса были пропущены, нужно сравнить заданные адреса компьютеров с теми что выполнили, а разница - необработанные хосты.
Для этого необходимо получить еще один файл, в котором у меня будет одна колонка с IP-адресами, которые были не обработаны, соответственно не попали в файл-отчета
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
vld-k [?]
если подключение не произошло, адрес пропускается и его не видно во втором файле-отчета
Проще адрес не пропускать, а фиксировать с ошибкой. Иначе, зачем добавлять "done", если все адреса, попавшие в отчёт, будут "done"?

Ну, а в случае отсутствия у вас доступа к коду того скрипта, файлы можно сравнить так
Код:
While 1
  $nMsg = GUIGetMsg()
  Switch $nMsg
    Case $GUI_EVENT_CLOSE
      Exit
    Case $Button3
      $aInput = FileReadToArray(GUICtrlRead($Input_data))
      If @error Then ContinueLoop
      $aOutput = FileReadToArray(GUICtrlRead($Output_data))
      If @error Then ContinueLoop
      $ResultFile = FileOpen(GUICtrlRead($result), 2)
      For $i = 0 To UBound($aInput) - 1
        For $j = 0 To UBound($aOutput) - 1
          If StringInStr($aOutput[$j], $aInput[$i]) Then ExitLoop
        Next
        If $j = UBound($aOutput) Then FileWriteLine($ResultFile, $aInput[$i])
      Next
      FileClose($ResultFile)
  EndSwitch
WEnd
 
Автор
V

vld-k

Новичок
Сообщения
39
Репутация
0
Спасибо, буду пробовать :IL_AutoIt_1:
 
Верх