快子项目的IP地址管理器

tipam的Python项目详细描述


TIPAM是一个非常快速的RESTFul IPv4/IPv6地址管理工具

它支持ipv4和ipv6,可以查找和分配任意大小的前缀。

必需的python包:

  • 卢克逊
  • pyipcalc公司

安装

$ pip3 install tipam

设置

$ mkdir tipam
$ luxon -i tipam tipam
$ luxon -d tipam

然后使用Apache2、nginx、luxon-s或您喜爱的符合WSGI的服务器

术语和用法

创建

关于创建,您可以在IPAM中执行以下to/with前缀操作:

  • 添加前缀
  • 分配前缀
  • 查找前缀

作为第一步,您必须add前缀。在添加前缀之前,不能allocatefind前缀:

$ curl -X POST \
  http://$TIPAM_URL/v1/prefix \
  -H 'Content-Type: application/json' \
  -d '{
    "prefix": "192.0.2.0/24",
    "name": "My First IP block"
   }'

添加前缀将在IPAM中创建前缀,并通过设置free=True使其可用。

现在已经向ipam添加了前缀,您可以从中allocate一个前缀:

$ curl -X POST \
  http://$TIPAM_URL/v1/allocate \
  -H 'Content-Type: application/json' \
  -d '{
        "prefix": "192.0.2.0/30",
        "name": "Customer 1"
   }'

分配前缀集free=False,这意味着不能从分配的前缀添加/分配更多的前缀。

您可以将标记与前缀关联:

$ curl -X POST \
  http://$TIPAM_URL/v1/tag \
  -H 'Content-Type: application/json' \
  -d '{
    "prefix": "58e27f46-7376-4147-a7d0-a31c05fe2b34",
    "tag": "doc_example"
   }'

您可以使用findv1/find)搜索并分配特定长度的第一个可用/空闲前缀。 标记用于指示要从哪个范围分配:

$ curl -X POST \
  http://$TIPAM_URL/v1/find \
  -H 'Content-Type: application/json' \
  -d '{
    "prefix_len": 29,
    "name": "Customer 2",
    "tag": "doc_example"
   }'

如果搜索成功,则返回找到的前缀,并自动分配。标记可以引用 多个前缀,在这种情况下,将搜索所有前缀,请求大小的第一个空闲前缀将 被分配和归还

您可以在多个rib中添加相同的前缀(路由信息库):

$ curl -X POST \
  http://$TIPAM_URL/v1/prefix \
  -H 'Content-Type: application/json' \
  -d '{
    "prefix": "192.0.2.0/24",
    "name": "SAME prefix, different rib",
    "rib": "other_context"
   }'

当前缀创建过程中省略rib时,将在名为“default”的默认肋骨中创建前缀。 不能在同一个肋骨中添加相同的前缀:-添加一个已经存在于肋骨中的前缀将导致更新 现有的前缀。

可以在前缀下添加前缀(例如192.0.2.128/25),也可以在前缀上添加前缀(例如192.0.0.0/16)。 这对于保留要标记和分配的范围非常有用。

读数

要获取所有创建/分配的前缀的列表,请执行GET/vi/prefixes/{version},其中version是 IPv4为“4”,IPv6为“6”:

$ curl http://$TIPAM_URL/v1/prefixes/4

要查看特定前缀的数据,请执行GET/vi/prefix/{id},其中id是 有疑问的前缀:

$ curl http://$TIPAM_URL/v1/prefix/a7f22bd8-3791-4346-a167-8f329c576e0b

如果不知道id,可以通过发送GET/v1/query/{ip}/{prefix_len},其中ip是所讨论的地址,而prefix_len是前缀长度:

$ curl http://$TIPAM_URL/v1/query/192.0.2.0/24

默认情况下,将查询“默认”肋骨。要查询另一个肋骨,请添加查询参数?rib=XXX

$ curl http://$TIPAM_URL/v1/query/192.0.2.0/24?rib=other_context

更新

添加或分配前缀后,可以使用PUTPATCH方法对其进行修改:

$ curl -X PUT \
  http://$TIPAM_URL/v1/prefix/a7f22bd8-3791-4346-a167-8f329c576e0b \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "updated_name"
  }'

注意,/v1/prefix/{id}上的PUT等于POST上的/v1/prefix,而^{tt22}的值$ 并且rib等于uuid为id的前缀。

只能更新以下字段:

  • 姓名
  • 说明
  • 前缀类型

删除

分配的前缀可以通过release来取消分配:

$ curl -X POST \
  http://$TIPAM_URL/v1/release \
  -H 'Content-Type: application/json' \
  -d '{
    "prefix": "192.0.2.0/30"
  }'

这将再次设置free=True,使其可供再次分配。

要从ipam中完全删除前缀,请执行DELETE方法/v1/prefix/{id}

$ curl -X DELETE http://$TIPAM_URL/v1/prefix/a7f22bd8-3791-4346-a167-8f329c576e0b

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

推荐PyPI第三方库


热门话题
java如何从旧的ArrayList<ArrayList<Integer>>创建新的ArrayList而不更改旧的?   java JBoss 7 |从随机线程写入jndi   java如何在数据库中有空值的JPA实体中迭代联接列   java Android应用程序在setContentView上崩溃   java如何在表单中预先填充文本字段,其中包含数据库中的信息。jsp?   来自R.raw的java Android文件阅读器。文件   如何将多个WAR(或Java Web应用程序,特别是使用Spring MVC)嵌入到一个承载另一个WAR的网页中?   java动态更新Jlist   gwt分页大结果集Java的最佳方式是什么   JavaCDI:为什么我的瞬态字段被序列化?   使用JAXB更新java XML模板文件   java getGraphics()返回空值   扩展javax的java类。ws。rs.core。无法将应用程序强制转换为Servlet   java方法可能无法在异常时关闭流   公共类的表达式的java非法开始   java年轻一代GC在EXT根扫描上花费了太多时间   使用CXF和具有未发布元数据的WSDL的java