从macaddress.io MAC json数据库中查找网卡制造商

问题描述 投票:1回答:1

有没有一种有效的方法来使用jq查询macaddress.io json Mac数据库,以找到网络汽车制造商。该数据库可从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,并且您需要提供更多位数才能获得唯一的正确答案。

丑陋的方法是在完整的MAC地址上循环,删除一位直到查询成功。

因此,对于DeLL计算机,这将循环6次,直到得到结果:让我们以14:18:77:34:23:12 MAC为例:

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"
}

我想知道是否有一种更聪明的方法在给定完整MAC的情况下可以返回最佳匹配。

例如:14:18:77:34:23:12 MAC将匹配14:18:77记录(DeLL)

并且00:50:C2:73:E3:27 MAC将匹配00:50:C2:73:E记录,而不是00:50:C2:73:F记录。

是否有任何想法/技巧/ jq命令来完成上述“软/智能”匹配?

((给定目标,使用完整的MAC(大写或小写),以检索companyName字段;如果找不到,则检索“未知”(或“”)。)

请注意,oui字段是唯一的,没有子集(如果存在XX:YY:ZZ:TT,则不能有XX:YY:ZZ(但可以有XX:YY:ZZ:UU))。知道这一点,则意味着最长的匹配是唯一的(单条记录)。

有没有一种有效的方法来使用jq查询macaddress.io json Mac数据库,以找到网络汽车制造商。该数据库可从https://macaddress.io/database-download(选择json ...

json database jq string-matching
1个回答
1
投票

获得合理有效解决方案的关键是,首先使用inputs并使用jq的-n命令行选项来收集合理的候选对象。考虑到这一点,我们可以编写:

© www.soinside.com 2019 - 2024. All rights reserved.