![]() |
Скрипт локальная синхронизация с дописыванием информации.
Здравствуйте! Помогите, пожалуйста, со скриптом. Вопрос в следующем:
Есть постоянно изменяющийся файл. csv. Нужно чтобы этот файл синхронизировался в такой же файл, но в другой папке. При синхронизации информация, которая пропала в основном файле, пропадает и в том, куда синхронизируется. А нужно, что б информация не пропадала, а если появилась новая, то новая дописывалась. Я не сильна в этом, буду очень благодарна за помощь! |
Corecess, тогда это ни разу не «синхронизация». То, что Вы описываете, попадает под категорию «Работа с базами данных».
Упакуйте Ваш .csv-файл в архив, каковой приложите к сообщению. |
Вложений: 1
Прилагаю архив. Это аудит беспроводных сетей. Точки доступа синхронизируют такие файлы на сервер. Проблема в том, что при потере устройств из вида их адреса в файле также удаляются. При перезагрузке точек доступа синхронизируется пустой файл, соответственно. Поэтому нужен такой скрипт, как я описала выше. Буду крайне признательна за помощь.
|
CSV-файлом это можно назвать с натяжкой, так как он нормально не структурирован, т. е., столбцы идут один под другим.
Вы хотите просто добавлять информацию в общий файл? Powershell: Код:
gc C:\temp\1\test.csv-01.csv |Out-File C:\temp\123.txt -Append |
Да, не структурирован. В принципе, да, добавлять, но что б записывалась только новая информация. Что б было, наверное, что-то вроде сравнениея, если такой адрес в файле уже есть, то он пропускается, если нет, записывается. Или это уже целую программу надо писать?
|
Адрес какой - MAC? Из какой колонки?
Все файлы одинаково выглядят, или все разные? Исходный файл всё-таки один или их много? Как должен выглядеть финальный файл? |
Corecess, почему у Вас две строки наименований? Чем и как формируется данный файл?
Цитата:
|
Две строки. Первый список - это MAC адреса точек доступа. Второй список - две колонки MAC адресов - это подключенные устройства и к каким точкам доступа подключены. Если ни к каким, во второй колонке not associated.
Файл формируется точкой доступа, линуксовским пакетом airodump-ng и синхронизируется на машину с виндовс. Т.е. если точка доступа перезагружается, то файл становится чистым. Соответственно на машине виндовс файл тоже становится чистым, теряются все данные. Нужно, чтобы эти данные не терялись. Как я это видела - файл на виндовс, который синхронизируется с точкой доступа, в какой-то промежуток времени копируется в другую папку. Такой скрипт уже есть, спасибо DJ Mogarych. Что бы не было тысячи файлов, файл должен дописываться, проверяя при этом совпадения и дописывать только те адреса, у которых нет совпадений, то есть новые. Возможно, это должно выглядеть не так. Файл всегда в таком виде, в каком есть. Файл один. Дополню, что количество MAC адресов точек доступа будет меняться, как и количество адресов подключенных устройств |
Наверное, можно было бы поизящнее, но это работает.
Powershell: Код:
$srcf = gc 'C:\temp\1\test.csv-01.csv' Каждый из этих типов имеет два вида - временный файл, где просто всё добавляется, и результирующий, где есть только уникальные значения. Результирующий файл имеет разделитель точку с запятой, т. к. такой файл сразу нормально открывается в Экселе. |
Цитата:
Первый вопрос: есть ли прямая и критическая зависимость между содержимым каких-то строк под первым заголовком, и содержимым каких-то строк под вторым заголовком? Есть ли между ними неразрывная связь? |
DJ Mogarych,
Спасибо! Работает! Но смотрите, если устройство появилось в сети второй раз, тогда у него стоит другое время/флаги/мощность, и он дописывается еще раз, т.к. совпадение действительно не найдено. Возможно не учитывать эти данные? В конечном итоге мне нужны только уникальные мак адреса, если это упростить задачу. Или после выполнения этого скрипта, когда все размечено в таблице, выполнить еще один, взять адреса только из столбца А, получается, и еще раз прогнать их через сравнение/запись для получения только уникальных адресов. Возможно, я говорю глупости. Iska, при формировании файла точкой доступа есть. В конечном итоге, нет, нужны только уникальные мак адреса. |
Corecess, ещё раз: в файлах clientstemp.csv и apstemp.csv содержатся все данные.
В файлах clients.csv и aps.csv - только уникальные мак-адреса. |
Вложений: 1
DJ Mogarych, моя ошибка, голова уже забита была.
Вот смотрите, попробуйте скрипт с этим файлом. С тем, что был вначале, скрипт работает. Вот новый файл, с этим файлом вносится только clients.csv, aps.csv пустой, почему-то. Файл такого же формата и такой же структуры. |
А потому что файл другой - у него первая строка пустая. Добавил дополнительную обработку исходного файла, чтобы пустые строки, если они есть вначале, удалялись.
Код:
$srcf = (gc 'C:\temp\1\test.csv-01.csv').where({$_ -match "[\w\d]"},'skipuntil') |
DJ Mogarych, действительно, другой. Все работает, спасибо большое за помощь!
|
Время: 17:18. |
Время: 17:18.
© OSzone.net 2001-