Golnag killing port pid

From UVOO Tech Wiki
Revision as of 00:55, 12 March 2022 by Busk (talk | contribs)
Jump to navigation Jump to search

package main

import (

       "fmt"
       "github.com/drael/GOnetstat"
       "os"
       "strconv"
       // "syscall"
       // "errors"

)

func main() {

       // listports()
       killPort(9999)

}

func stopServer(proc *os.Process) {

       err := proc.Kill()
       if err != nil {
               panic(err.Error())
       }
       proc.Release()

}

func killPID(pid int) {

       process, err := os.FindProcess(pid)
       if err != nil {
               panic(err.Error())
       }
       process.Signal(os.Interrupt)

}

func killPort(port int64) {

       d := GOnetstat.Tcp()
       for _, p := range d {
               if p.State == "LISTEN" && p.Port == port {
                       fmt.Printf("Killing port, pid, name %v %v %v\n", port, p.Pid, p.Name)
                       pid, err := strconv.Atoi(p.Pid)
                       if err != nil {
                               panic(err.Error())
                       }
                       killPID(pid)
               }
       }

}

func listPorts() {

       d := GOnetstat.Tcp()
    fmt.Printf("Proto %16s %20s %14s %14s %14s\n", "Local Adress", "Foregin Adress",
            "State", "Pid", "Program")

    for _, p := range d {
            if p.State == "LISTEN" {
                    fmt.Printf("foo")
            }

            if p.State == "LISTEN" {
                    ip_port := fmt.Sprintf("%v:%v", p.Ip, p.Port)
                    fip_port := fmt.Sprintf("%v:%v", p.ForeignIp, p.ForeignPort)
                    pid := fmt.Sprintf("%v", p.Pid)
                    program := fmt.Sprintf("%v", p.Name)
                    fmt.Printf("tcp %16v %20v %16v %14v %14v\n", ip_port, fip_port,
                            p.State, pid, program)
            }
    }

}