Иногда нужно понять что и как работает на множестве устройств, но заходить для этого на каждое устройства нет смысла если есть общее место хранения файлов конфигурации и последняя конфигурация сохраняется в этом месте автоматически. Для поиска нужной строки можно запустить поиск по содержимому в каталоге с файлами сохраненных конфигураций.
Т.к. сохраняются файлы и предыдущих версий конфигурации, то более новые помечаются добавлением номера версии "-ХХ" и если просто запустить grep <pattern>, то будет множество строк с одинаковыми названиями устройств, отличающихся только последними 2-3 знаками. Задача: найти файлы, отрезать индексы номера версий в названии, и выдать по одной уникальной строке на одно устройство. Решение примерно такое:
1) ищем подходящий паттерн (grep), подаём его на вход (awk), где указываем разделитель полей ((-F ":"), если нет то "пробел"), указываем в awk чтобы вывел первую (или другую) Часть (относительно разделителя), но изменённую substr, аргументом которой будет:
часть строки ($1), далее номер символа для начала вывода в этой Части, и номер последнего символа в Части, длину которой определяем динамически оператором length($1) и от которой отрезаем номер версии файла конфигурации 4 символа (надо подбирать, т.к. это д.б. с учетом сдвинутого ранее на 2 вывода Части). После этого подадим на вход команде sort -u для исключения одинаковых названий (без номера версий названия всех файлов конфигурации для одного узла будут одинаковы, и будет много одинаковых строк).
grep "^interface Vlan5" ./* | awk -F ":" '{print substr($1,3,length($1)-4)}' | sort -u > vl5
Этот приём можно использовать когда название файла конфигурации можно ассоциировать с определённым узлом и тогда будет выведен столбец с названиями узлов, где имеется требуемая строка в конфигурации.
после grep:
./zld-lnn32-do-0:interface Vlan5
./zld-lnn32-do-1:interface Vlan5
./zld-lnn32-do-2:interface Vlan5
после awk:
zld-lnn32-do
zld-lnn32-do
zld-lnn32-do
после sort:
zld-lnn32-do
Т.к. сохраняются файлы и предыдущих версий конфигурации, то более новые помечаются добавлением номера версии "-ХХ" и если просто запустить grep <pattern>, то будет множество строк с одинаковыми названиями устройств, отличающихся только последними 2-3 знаками. Задача: найти файлы, отрезать индексы номера версий в названии, и выдать по одной уникальной строке на одно устройство. Решение примерно такое:
1) ищем подходящий паттерн (grep), подаём его на вход (awk), где указываем разделитель полей ((-F ":"), если нет то "пробел"), указываем в awk чтобы вывел первую (или другую) Часть (относительно разделителя), но изменённую substr, аргументом которой будет:
часть строки ($1), далее номер символа для начала вывода в этой Части, и номер последнего символа в Части, длину которой определяем динамически оператором length($1) и от которой отрезаем номер версии файла конфигурации 4 символа (надо подбирать, т.к. это д.б. с учетом сдвинутого ранее на 2 вывода Части). После этого подадим на вход команде sort -u для исключения одинаковых названий (без номера версий названия всех файлов конфигурации для одного узла будут одинаковы, и будет много одинаковых строк).
grep "^interface Vlan5" ./* | awk -F ":" '{print substr($1,3,length($1)-4)}' | sort -u > vl5
Этот приём можно использовать когда название файла конфигурации можно ассоциировать с определённым узлом и тогда будет выведен столбец с названиями узлов, где имеется требуемая строка в конфигурации.
после grep:
./zld-lnn32-do-0:interface Vlan5
./zld-lnn32-do-1:interface Vlan5
./zld-lnn32-do-2:interface Vlan5
после awk:
zld-lnn32-do
zld-lnn32-do
zld-lnn32-do
после sort:
zld-lnn32-do
Комментариев нет:
Отправить комментарий