github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/list-networks/main.go (about) 1 // Copyright (c) 2014 Dimitri Sokolyuk. All rights reserved. 2 // Use of this source code is governed by ISC-style license 3 // that can be found in the LICENSE file. 4 5 // Example command list-networks 6 // Prints networks of a given site 7 // If no site is specified, all of the controllers networks are listed 8 9 package main 10 11 import ( 12 "flag" 13 "fmt" 14 "log" 15 "os" 16 "strconv" 17 "text/tabwriter" 18 19 "github.com/dim13/unifi" 20 ) 21 22 var ( 23 host = flag.String("host", "unifi", "Controller hostname") 24 user = flag.String("user", "admin", "Controller username") 25 pass = flag.String("pass", "unifi", "Controller password") 26 port = flag.String("port", "8443", "Controller port") 27 version = flag.Int("version", 5, "Controller base version") 28 siteid = flag.String("siteid", "", "Sitename or description") 29 ) 30 31 func main() { 32 w := new(tabwriter.Writer) 33 w.Init(os.Stdout, 0, 8, 3, ' ', 0) 34 defer w.Flush() 35 36 flag.Parse() 37 38 u, err := unifi.Login(*user, *pass, *host, *port, *siteid, *version) 39 if err != nil { 40 log.Fatalln("Login returned error: ") 41 } 42 defer u.Logout() 43 44 var sites []unifi.Site 45 46 // If site specified, print networks of site 47 // Else print networks of all sites 48 if *siteid != "" { 49 site, err := u.Site(*siteid) 50 if err != nil { 51 log.Fatal(err) 52 } 53 sites = append(sites, *site) 54 } else { 55 sites, err = u.Sites() 56 if err != nil { 57 log.Fatal(err) 58 } 59 } 60 61 for _, s := range sites { 62 63 if len(sites) > 1 { 64 fmt.Fprintf(w, "Site: %s\n", s.Desc) 65 w.Flush() 66 } 67 68 // Returns a slice of devices 69 networks, err := u.Networks(&s) 70 71 if err != nil { 72 log.Fatalln(err) 73 } 74 75 // Output headline 76 fmt.Fprintln(w, "ID\tName\tSiteID\tPurpose\tSubnet\tNetworkgroup\tDomainname\tAttrHiddenId\tAttrNoDelete\tVlanEnabled") 77 78 for _, n := range networks { 79 id := n.ID // string 80 name := n.Name // string 81 siteid := n.SiteID // string 82 purpose := n.Purpose // string 83 subnet := n.IPSubnet 84 networkgroup := n.Networkgroup // string 85 domaninname := n.DomainName // string 86 attrhiddenid := n.AttrHiddenID //string 87 attrnodelete := n.AttrNoDelete // bool 88 vlanenabled := n.VlanEnabled // bool 89 90 fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", id, name, siteid, purpose, subnet, networkgroup, domaninname, attrhiddenid, strconv.FormatBool(attrnodelete), strconv.FormatBool(vlanenabled)) 91 } 92 } 93 }