powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
6 сообщений из 6, страница 1 из 1
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774851
Доброго дня. Есть технически сложное оборудование, с которого можно получить информацию через telnet. Задача распарсить полученный ответ в таблицу (файл в аттаче по ответу с одной железки, а их много).
В данном примере на оборудование посланы три команды
ZQRI:BCXU::VLAN700:;
ZQRI:BCXU::VLAN701:;
ZQRI:ETME::VLAN23;
и по ним получен ответ.
Т.к. платы на оборудовании могут свичернуться, то IP адрес перейдет на другую плату.
В идеале парсить ответ оборудования сразу в таблицу на лету. Но с этим пока сложно, нужно распарсить хотя бы файл, а потом попытаться работать на лету :)
Минимум, который хотелось бы получить на выходе.
mcBSCUNITADMIN STATE INTERFACEIP ADDRESSNBSC01BCXU-0 UPVLAN700NBSC01BCXU-1UPVLAN700NBSC01BCXU-2UPVLAN70010.42.128.73/28NBSC01BCXU-3UPVLAN70010.42.128.72/28---------------NBSC01BCXU-0 UPVLAN701NBSC01BCXU-1UPVLAN701NBSC01BCXU-2UPVLAN70110.42.128.89/28NBSC01BCXU-3UPVLAN70110.42.128.88/28---------------NBSC01ETME-0UPVLAN23NBSC01ETME-1UPVLAN2310.0.3.4/25NBSC01ETME-2UPVLAN2310.0.3.1/25NBSC01ETME-3UPVLAN2310.0.3.3/25NBSC01ETME-4UPVLAN2310.0.3.5/25
Спасибо.
...
Рейтинг: 0 / 0
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774865
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимедофф,
для наглядности заменила пробелы на подчеркивание и убрала пустые строки
LOADING_PROGRAM_VERSION_27.96-0
mcBSC_____NBSC01_________________2019-02-16__10:50:55
INTERROGATING_NETWORK_INTERFACE_DATA
UNIT_________ADMIN_______ADDR
__INTERFACE__STATE_MTU___ATTR_____IP_ADDRESS
------_-----_-----_--_---------------
ETME-0_____________
__VLAN23_____UP____1500____________________
___->IFETH0____23___0/0____________________
ETME-1_____________
__VLAN23_____UP____1500__LI______(10.0.3.4/25)_________
____________________________________EEP_____________
___->IFETH0____23___0/0____________________
ETME-2_____________
__VLAN23_____UP____1500__LI______(10.0.3.1/25)_________
____________________________________EEP_____________
___->IFETH0____23___0/0____________________
ETME-3_____________
__VLAN23_____UP____1500__LI______(10.0.3.3/25)_________
____________________________________EEP_____________
___->IFETH0____23___0/0____________________
ETME-4_____________
__VLAN23_____UP____1500__LI______(10.0.3.5/25)_________
____________________________________EEP_____________
___->IFETH0____23___0/0____________________
COMMAND_EXECUTED

надо получить
SCUNITADMIN STATEINTERFACEIP ADDRESSNBSC01BCXU-0 UPVLAN700NBSC01BCXU-1UPVLAN700NBSC01BCXU-2UPVLAN70010.42.128.73/28NBSC01BCXU-3UPVLAN70010.42.128.72/28
...
Рейтинг: 0 / 0
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774922
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего тут сложного?

Строки с фиксированной шириной полей.

1. Грузим строки в табличку целиком.
2. Пишем разбиралку для одной строки на VBA или запросом. Как умеешь.
...
Рейтинг: 0 / 0
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774939
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Чего тут сложного?

Строки с фиксированной шириной полей.

1. Грузим строки в табличку целиком.
2. Пишем разбиралку для одной строки на VBA или запросом. Как умеешь.у него то, что должно попасть в одну таблицу результата - в 2-х последовательных строках файла
а значение для 1-го поля (mcBSC) так вообще, в "шапке" таблицы, один раз ...

Код: vbnet
1.
2.
3.
4.
mcBSC     NBSC01                 2019-02-16  10:50:55
...
BCXU-9             
  VLAN701    UP    1500  L        10.42.128.86/28                              

имхо, тут таблицы/запросы не помогут.
Тут тупо : "запрягся" и пошел парсить в VBA, построчно :)
...
Рейтинг: 0 / 0
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774944
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtaleks222Чего тут сложного?

Строки с фиксированной шириной полей.

1. Грузим строки в табличку целиком.
2. Пишем разбиралку для одной строки на VBA или запросом. Как умеешь.у него то, что должно попасть в одну таблицу строку результата - в 2-х последовательных строках файла
а значение для 1-го поля (mcBSC) так вообще, в "шапке" таблицы, один раз ...

Код: vbnet
1.
2.
3.
4.
mcBSC     NBSC01                 2019-02-16  10:50:55
...
BCXU-9             
  VLAN701    UP    1500  L        10.42.128.86/28                              


имхо, тут таблицы/запросы не помогут.
Тут тупо : "запрягся" и пошел парсить в VBA, построчно :)
...
Рейтинг: 0 / 0
Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
    #39774947
court,

Получается достать, двигаясь сверху вниз и загоняя нужные данне в переменные. Не уверен что код красивый, но тем не менее.
И да, чуть переделал свою хотелку сверху. Результат удовлетворяет. Советы на подточить код - принимаются :)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Dim f, FileTxt$
Dim NameBSC$, NameUnit$, NumUnit%, IPUnit$

f = FreeFile
'DoCmd.CloseTable "tbl_BRD"
strSQL = "delete * from tbl_BRD"
CurrentDb.Execute (strSQL)

Open PathFile For Input As f
Do While Not EOF(f)
    'FileTxt = Input(0, #f)   '  посимвольное чтение
    Line Input #f, FileTxt    '  построчное чтение
    If FileTxt Like "*mcBSC*" Then
      NameBSC = Split(FileTxt, "     ")(1)
    End If
    If FileTxt Like "BCXU-*" Or FileTxt Like "ETME-*" Then
      NameUnit = Trim(FileTxt)
      NumUnit = Split(NameUnit, "-")(1)
    End If
    On Error Resume Next
    If LTrim(FileTxt) Like "VLAN*" Then
        If LTrim(FileTxt) Like "VLAN7*" Then IPUnit = Split(FileTxt, "    ")(4)
        If LTrim(FileTxt) Like "VLAN2*" Then IPUnit = Replace(Replace(Trim(Split(FileTxt, "    ")(3)), ")", ""), "(", "")
        'Debug.Print "NameBSC:" & NameBSC & " NameUnit: " & NameUnit & "  NumUnit: " & NumUnit & "  IPUnit: " & IPUnit
        
        ' на данном шаге все собрали, будем добавлять в таблицу
        strSQL = "INSERT INTO tbl_BRD(NameBSC, NameUnit, NumUnit, IPUnit, TimeUpdate ) "
        strSQL = strSQL & " values('" & NameBSC & "','" & NameUnit & "','" & NumUnit & "','" & IPUnit & "',#" & Format(Date & " " & Time, "yyyy\/mm\/dd hh\:mm") & "#)"
        'Debug.Print strSQL
        CurrentDb.Execute (strSQL)
    End If
Loop
Close #f


...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распарсить не стандартный текстовый файл. Ответ оборудования через телнет.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]