zoukankan      html  css  js  c++  java
  • netbox demo

    参考链接:https://pypi.org/project/python-netbox/

    # python 参考链接

    https://ttl255.com/pynetbox-netbox-python-api-client-p1-getting-info/

    https://ttl255.com/pynetbox-netbox-python-api-client-part-2-creating-objects/

    https://ttl255.com/pynetbox-netbox-python-api-client-part-3-updates-and-deletions/

    https://ttl255.com/pynetbox-netbox-python-api-client-part-4-tags-auto-assing-prefixes/

    https://pynetbox.readthedocs.io/en/latest/

    # 下载python包

    pip3 install python-netbox

    # golang 示例:

    package main
    
    import (
            "context"
            "github.com/netbox-community/go-netbox/netbox"
            "github.com/netbox-community/go-netbox/netbox/client/dcim"
            "github.com/netbox-community/go-netbox/netbox/client/ipam"
            "github.com/netbox-community/go-netbox/netbox/models"
    
            log "github.com/sirupsen/logrus"
    )
    
    func main() {
            //c := netbox.NewNetboxAt("x.x.x.x:9999")
            c := netbox.NewNetboxWithAPIKey("x.x.x.x:9999", "1f3c19b9586d875e74a36fe227d3e54d87ecf2be")
    
            // List site
            req := dcim.NewDcimSitesListParams()
            siteList, err := c.Dcim.DcimSitesList(req, nil)
            if err != nil {
                    log.Fatalf("Cannot get sites list: %v", err)
                    return
            }
            log.Infof("siteList: %v", siteList)
    
            for _, v := range siteList.Payload.Results {
                    log.Infof("site id  : %v", v.ID)
                    log.Infof("site name: %v", v.Name)
            }
    
            // create vrf
            var vrfID int64
            {
                    tags := []string{"123456"}
                    name := "test_vrf"
                    data := &models.WritableVRF{
                            Tags:          tags,
                            EnforceUnique: true,
                            Name:          &name,
                    }
                    p := ipam.NewIpamVrfsCreateParamsWithContext(context.TODO())
                    p = p.WithData(data)
                    vrf, err := c.Ipam.IpamVrfsCreate(p, nil)
                    if err != nil {
                            log.Fatalf("Cannot create vrf: %v", err)
                            return
                    }
                    log.Infof("vrf: %v", vrf)
                    vrfID = vrf.Payload.ID
            }
    
            // create prefix
            var prefixID int64
            {
                    prefix := "100.100.100.0/24"
                    tags := []string{"abcdef"}
                    data := &models.WritablePrefix{
                            Prefix:      &prefix,
                            Vrf:         &vrfID,
                            Description: "1234567890",
                            IsPool:      true,
                            Tags:        tags,
                    }
                    p := ipam.NewIpamPrefixesCreateParams()
                    p = p.WithContext(context.TODO())
                    p = p.WithData(data)
                    pf, err := c.Ipam.IpamPrefixesCreate(p, nil)
                    if err != nil {
                            log.Fatalf("Cannot create prefix: %v", err)
                            return
                    }
                    log.Infof("prefix: %v", pf)
                    prefixID = pf.Payload.ID
            }
    
            // allocate ip addr
            {
                    tags := []string{"1234567890"}
                    data := &models.WritablePrefix{
                            Vrf:         &vrfID,
                            Tags:        tags,
                            Description: "1234567890",
                    }
                    p := ipam.NewIpamPrefixesAvailableIpsCreateParamsWithContext(context.TODO())
                    p = p.WithData(data)
                    p = p.WithID(prefixID)
                    addr, err := c.Ipam.IpamPrefixesAvailableIpsCreate(p, nil)
                    if err != nil {
                            log.Fatalf("Cannot allocate ip addr: %v", err)
                            return
                    }
                    log.Infof("allocate addr: %v", addr)
            }
    
            // create ip addr
            {
                    ipAddr := "100.100.100.100/24"
                    tags := []string{"1234567890"}
                    data := &models.WritableIPAddress{
                            Address:     &ipAddr,
                            Vrf:         &vrfID,
                            Tags:        tags,
                            Description: "1234567890",
                    }
                    p := ipam.NewIpamIPAddressesCreateParamsWithContext(context.TODO())
                    p = p.WithData(data)
                    addr, err := c.Ipam.IpamIPAddressesCreate(p, nil)
                    if err != nil {
                            log.Fatalf("Cannot allocate ip addr: %v", err)
                            return
                    }
                    log.Infof("create addr: %v", addr)
            }
    }
  • 相关阅读:
    未能加载文件或程序集BUG系列
    寄语
    65. Valid Number
    56. Merge Intervals
    sublime text3 anaconda 插件报错
    42. Trapping Rain Water
    windows 下win+r无效
    93. Restore IP Addresses
    32. Longest Valid Parentheses
    48 Rotate Image
  • 原文地址:https://www.cnblogs.com/wangjq19920210/p/13272055.html
Copyright © 2011-2022 走看看