github.com/dim13/unifi@v0.0.0-20230308161331-9b04946f5e93/cmd/list-uaps/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-aps
     6  // List APs of a given site
     7  package main
     8  
     9  import (
    10  	"flag"
    11  	"fmt"
    12  	"log"
    13  	"os"
    14  	"strconv"
    15  	"strings"
    16  	"text/tabwriter"
    17  
    18  	"github.com/dim13/unifi"
    19  )
    20  
    21  var (
    22  	host    = flag.String("host", "unifi", "Controller hostname")
    23  	user    = flag.String("user", "admin", "Controller username")
    24  	pass    = flag.String("pass", "unifi", "Controller password")
    25  	version = flag.Int("version", 5, "Controller base version")
    26  	port    = flag.String("port", "8443", "Controller port")
    27  	siteID  = flag.String("siteid", "default", "Sitename or description")
    28  )
    29  
    30  func main() {
    31  	w := new(tabwriter.Writer)
    32  	w.Init(os.Stdout, 0, 8, 3, ' ', 0)
    33  	defer w.Flush()
    34  
    35  	flag.Parse()
    36  
    37  	u, err := unifi.Login(*user, *pass, *host, *port, *siteID, *version)
    38  	if err != nil {
    39  		log.Fatalln("Login returned error: ", err)
    40  		return
    41  	}
    42  	defer u.Logout()
    43  
    44  	site, err := u.Site(*siteID)
    45  	if err != nil {
    46  		log.Fatal(err)
    47  	}
    48  
    49  	aps, err := u.UAPs(site)
    50  	if err != nil {
    51  		log.Fatalln(err)
    52  		return
    53  	}
    54  
    55  	// Output headline
    56  	fmt.Fprintln(w, "DeviceName\tIP\tMac\tModelName\tVersion\tStatus\tNumberOfUsers\tNumerOfGuests\tTxBytes\tRxBytes")
    57  
    58  	for _, a := range aps {
    59  		p := []string{
    60  			a.DeviceName(),
    61  			a.IP,
    62  			a.Mac,
    63  			a.ModelName(),
    64  			a.Version,
    65  			a.State.String(),
    66  			strconv.Itoa(a.NumSta),
    67  			strconv.Itoa(a.GuestNumSta),
    68  			unifi.Bytes(a.TxBytes).String(),
    69  			unifi.Bytes(a.RxBytes).String(),
    70  		}
    71  		fmt.Fprintln(w, strings.Join(p, "\t"))
    72  	}
    73  }