Существует ли эффективный способ запроса базы данных macaddress.io json Ma c с использованием jq для поиска производителя сетевого автомобиля. база данных находится в свободном доступе по адресу https://macaddress.io/database-download (выберите json + загрузить
"oui": "00:50:C2:73:E",
"isPrivate": false,
"companyName": "Quantec Networks GmbH",
"companyAddress": "Rieselwiese 1 Vienenburg Niedersachsen 38690 DE",
"countryCode": "DE",
"assignmentBlockSize": "IAB",
"dateCreated": "2007-05-14",
"dateUpdated": "2015-08-29"
}
Для компьютера DeLL я могу сделать запрос следующим образом: cat macaddress.io-db.json |jq 'select(.oui|test("14:18:77"))'
К сожалению, для вышеупомянутого запись, существует несколько названий компаний, соответствующих 00: 50: C2, и вам нужно дать больше di git, чтобы получить уникальный правильный ответ.
Гадкий подход - l oop на полной MA C адрес удаляет один ди git до тех пор, пока запрос не будет выполнен.
Так что для компьютера DeLL это будет l oop 6 раз, прежде чем мы получим результат: Давайте возьмем 14: 18: 77: 34: 23:12 MA C как пример:
1st query: 14:18:77:34:23:1 => no answer
2nd query: 14:18:77:34:23 => no answer
3rd query: 14:18:77:34:2 => no answer
4th query: 14:18:77:34 => no answer
5th query: 14:18:77:3 => no answer
6th query: 14:18:77 => we get the DeLL record:
{
"oui": "14:18:77",
"isPrivate": false,
"companyName": "Dell Inc",
"companyAddress": "One Dell way Round Rock 78682 US",
"countryCode": "US",
"assignmentBlockSize": "MA-L",
"dateCreated": "2015-06-13",
"dateUpdated": "2019-07-01"
}
Интересно, существует ли более разумный подход, который бы возвращал лучшее совпадение при полной MA C.
Например: 14: 18: 77: 34: 23: 12 MA C будет соответствовать записи 14:18:77 (DeLL)
И 00: 50: C2: 73: E3: 27 MA C будет соответствует 00: 50: C2: 73: E запись, а не 00: 50: C2: 73: F запись.
Любая идея / tips / jq команда для достижения sh вышеуказанного «мягкого / умного» соответствия ?
(Цель, учитывая полный М A C (в верхнем или нижнем регистре), чтобы получить поле companyName или «Неизвестно» (или «»), если не найдено.)
Обратите внимание, что поля oui уникальны и подмножество отсутствует (если XX: YY: ZZ: TT существует, у вас не может быть XX: YY: ZZ (но у вас может быть XX: YY: ZZ: UU)). Знание этого означает, что самое длинное совпадение является уникальным (одна запись).