自动从设备获取mac/ip地址表(arp和ipv6邻居),并构建mac地址到bgp对等asn映射。

mactopeer的Python项目详细描述


mac到peer

PYPIVersionPythonVersionsBuildStatusCoveralls

自动从设备获取mac/ip地址表(arp和ipv6邻居),并构建mac地址到bgp对等asn映射。

特别关注构建pmacct'sbgp_peer_src_as_mapfile

router1#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.0.2.1             101   0000.5E00.5300  ARPA   TenGigabitEthernet0/0/0

router1#show bgp ipv4 unicast neighbors 192.0.2.1
BGP neighbor is 192.0.2.1, remote AS 65536, internal link
...

需要:00:00:5e:00:53:00->;AS65536

json输出格式:

$ mactopeer -u pierky -p - --hostname router1.example.com
Enter password:
{
  "router1.example.com": {
    "00:00:5E:00:53:00": {
      "ifaces": [
        "TenGigabitEthernet0/0/0"
      ],
      "ip_addrs": [
        "192.0.2.1"
      ],
      "peer_asns": {
        "65536": {
          "description": "my-peer",
          "ip_addrs": [
            "192.0.2.1"
          ]
        }
      }
    }
  }
}

pmacct输出格式:

$ mactopeer -u pierky -p - --devices device.json -f pmacct
Enter password:
id=65536      ip=203.0.113.1          src_mac=00:00:5E:00:53:00

安装和依赖项

使用pip安装程序:

pip install mactopeer

脚本使用NAPALM库连接到网络设备并从中获取数据:必须安装整个库…

pip install napalm

…或至少连接到实际需要的设备所需的网络驱动程序子集:

pip install napalm-ios napalm-junos

有关更多详细信息,网络驱动程序及其依赖项的完整列表请参见官方的NAPALM documentation

使用和功能

--help显示该程序提供的所有选项。见its output in USAGE.rst

可以使用输入json文件提供设备列表:有关其架构的详细信息,请运行mactopeer --help-devices。见its output in USAGE.rst

过滤器可以设置为根据其mac地址、ip地址或生成的对等asn跳过条目。用于排除ibgp会话或处理异常。

还支持多线程同时从多个设备获取信息

受支持设备的列表可以在凝固汽油弹文档网站的Supported Devices部分找到所有实现get_arp_tableget_bgp_neighbors方法的人都应该工作:在编写时,它们是EOS、IOS、IOSX-R、JunOS、NXOS和VyOS

与PeeringDB集成

参数--use-peeringdb可用于从peeringdb中获取缺少的对等方的asn,例如在多边对等的情况下(例如ixps上的路由服务器)。在这种情况下,路由器在IP地址和BGP邻居之间没有一个直接的映射,因此IP地址被用来查找PeeringDB记录以找到使用它的网络

注意事项

  • 目前缺少VRF支持,主要是因为它还没有包含在凝固汽油弹中。
  • 只有使用尚未发布的凝固汽油弹版本(即包含this pull request)时,才能获取IPv6邻居表。若要避免WARNING - Skipping IPv6 neighbors table消息,请使用--arp-only参数。

作者

卡洛·奇奥迪码头-https://pierky.com/

博客:https://blog.pierky.com/推特:@pierky

更改日志

v0.3.0

  • 改进:使use_peeringdb成为设备声明的属性。
  • 改进:一些修复

此外,该工具现在可以用作库

v0.2.0

  • 新:基于IP的过滤器也扩展到前缀的使用。
  • 新的:--use-peeringdb参数,用于从PeeringDB获取丢失的对等方的asn(例如,在IXPs上进行多边对等时)

v0.1.0

第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在通配符泛型类型和泛型类型之间未经检查的强制转换   java Eclipse SWT Hello world教程:无法将显示解析为类型   java如何向远程用户发送注销消息?   java RDD之后的空文件是什么。保存ASTEXTFILE?   用户界面在java中创建一个htmljs UI GCalendar   Java多个哈希映射指向同一个键   Java Dowhile循环不工作?   oraclejava类。组织。阿帕奇。梁sdk。util。UserCodeException:java。sql。SQLException:无法创建PoolableConnectionFactory   java是org类型。日食用户界面。文本编辑器。*看不见   java有没有从弹出窗口复制eclipse中变量值的插件或快捷方式?   java getSubimage为我提供了期望值null   java我想让它变得更简单   swing AWTEventQueue0一直在运行,java中的程序变得非常慢   java Solr实例化类时出错:自定义类   java将ListView适配器移植到RecyclerView适配器   c#测试混合web和桌面应用程序的安全性