从Go脚本连续执行tshark

I am trying to execute tskarh from golang script using the example from https://tutorialedge.net/golang/executing-system-commands-with-golang/

The script works fine, but i don't receive any kind of output

What i want to get is the following:

  1. Continuously run the script,
  2. capture some packets,
  3. extract some fields values,
  4. and assign to variables

Any help please ?

https://pastebin.com/PeAz7vh9

package main

import (
    "fmt"
    "os/exec"
    "runtime"
)

func execute() {

  // here we perform the pwd command.
  // we can store the output of this in our out variable
  // and catch any errors in err
    out, err := exec.Command("tshark", "-i", "em1").CombinedOutput()

  // if there is an error with our execution
  // handle it here
    if err != nil {
        fmt.Printf("%s", err)
    }

    fmt.Println("Command Successfully Executed")
  // as the out variable defined above is of type []byte we need to convert
  // this to a string or else we will see garbage printed out in our console
  // this is how we convert it to a string
    output := string(out[:])

  // once we have converted it to a string we can then output it.
    fmt.Println(output)
}

func main() {

    fmt.Println("Simple Shell")
    fmt.Println("---------------------")

    if runtime.GOOS == "windows" {
        fmt.Println("Can't Execute this on a windows machine")
    } else {
        execute()
    }
}

I have no idea of tshark, but here is a code that will work continously, you need os.Interrupt, and select.

package main

import (
    "os"
    "os/exec"
    "os/signal"
)

func main() {
    out := exec.Command("ping", "8.8.8.8")
    f1, _ := os.OpenFile("./outfile.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755)
    f2, _ := os.OpenFile("./errfile.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755)
    out.Stdout = f1
    out.Stderr = f2
    defer func() {
        f1.Close()
        f2.Close()
    }()

    err := out.Run()
    if err != nil {
        panic(err)
    }

    var ctrlcInt chan os.Signal
    ctrlcInt = make(chan os.Signal, 1)
    signal.Notify(ctrlcInt, os.Interrupt)
    for {
        select {
        case <-ctrlcInt:
            break
        default:
            continue
        }
    }

    return
}

this code pings 8.8.8.8 and writes out put to outfile.txt, it will exit when you press ctrl+c. If there is error it will write to errfile.txt. You can tail the files and see the output. Hope this helps.