]> Sergey Matveev's repositories - godwmstat.git/commitdiff
Two NICs
authorSergey Matveev <stargrave@stargrave.org>
Sun, 24 Sep 2023 08:17:13 +0000 (11:17 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 24 Sep 2023 08:17:13 +0000 (11:17 +0300)
main.go

diff --git a/main.go b/main.go
index e936217a9ac960d614311fc464fd8ea31c253155..09ff208b35b07a49132cdf6b6f08ebb538ee895a 100644 (file)
--- a/main.go
+++ b/main.go
@@ -9,6 +9,7 @@ import (
        "os/exec"
        "strconv"
        "strings"
+       "sync"
        "time"
 
        "github.com/dustin/go-humanize"
@@ -23,7 +24,8 @@ var (
        Swap  string = ""
        Flags string = "?"
        IOs   string = "?"
-       Net   string = "?"
+       Net          = map[string]string{}
+       NetM  sync.RWMutex
 )
 
 func piper(c chan []string, name string, args ...string) error {
@@ -97,8 +99,8 @@ func iostat() {
        }
 }
 
-func netstat() {
-       for cols := range bg("netstat", "-I", "bridge0", "-n", "1") {
+func netstat(iface string) {
+       for cols := range bg("netstat", "-I", iface, "-n", "1") {
                if _, err := strconv.Atoi(cols[0]); err != nil {
                        continue
                }
@@ -110,12 +112,16 @@ func netstat() {
                if err != nil {
                        continue
                }
-               Net = fmt.Sprintf(
-                       "%s/%s %s / %s",
-                       cols[0], cols[4],
+               _ = cols[0] // pkts rx
+               _ = cols[4] // pkts tx
+               NetM.Lock()
+               Net[iface] = fmt.Sprintf(
+                       "%s:%s/%s",
+                       iface,
                        humanize.IBytes(uint64(ibps)),
                        humanize.IBytes(uint64(obps)),
                )
+               NetM.Unlock()
        }
 }
 
@@ -158,17 +164,20 @@ func main() {
        go top()
        go freq()
        go iostat()
-       go netstat()
+       go netstat("bridge0")
+       go netstat("ix0")
        var now time.Time
        var status string
        var cmd *exec.Cmd
        for {
                now = time.Now()
+               NetM.RLock()
                status = fmt.Sprintf(
-                       "[%s]  [%s]  [%s %s]  [%s%s %s ARC]  [%s] %s",
-                       IOs, Net, CPU, Freq, Swap, Mem, ARC, Flags,
+                       "[%s]  [%s %s]  [%s %s]  [%s%s %s ARC]  [%s] %s",
+                       IOs, Net["bridge0"], Net["ix0"], CPU, Freq, Swap, Mem, ARC, Flags,
                        now.Format("2006-01-02 15:04:05"),
                )
+               NetM.RUnlock()
                if *xsetroot {
                        cmd = exec.Command("xsetroot", "-name", status)
                        cmd.Run()