Documentation ¶
Overview ¶
Package procspy lists TCP connections, and optionally tries to find the owning processes. Works on Linux (via /proc) and Darwin (via `lsof -i` and `netstat`). You'll need root to use Processes().
Index ¶
- func ReadDirNames(path string) ([]string, error)
- func ReadNetnsFromPID(procRoot string, pid int) (uint64, error)
- func ReadTCPFiles(procRoot string, pid int, buf *bytes.Buffer) (int64, error)
- type CachingWalker
- type ConnIter
- type Connection
- type ConnectionScanner
- type Proc
- type ProcNet
- type Process
- type Walker
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ReadDirNames ¶
func ReadNetnsFromPID ¶
ReadNetnsFromPID gets the netns inode of the specified pid
Types ¶
type CachingWalker ¶
type CachingWalker struct {
// contains filtered or unexported fields
}
CachingWalker is a walker than caches a copy of the output from another Walker, and then allows other concurrent readers to Walk that copy.
func NewCachingWalker ¶
func NewCachingWalker(source Walker) *CachingWalker
NewCachingWalker returns a new CachingWalker
func (*CachingWalker) Name ¶
func (*CachingWalker) Name() string
Name of this ticker, for metrics gathering
func (*CachingWalker) Tick ¶
func (c *CachingWalker) Tick() error
Tick updates cached copy of process list
type ConnIter ¶
type ConnIter interface {
Next() *Connection
}
ConnIter is returned by Connections().
type Connection ¶
type Connection struct { LocalAddress net.IP LocalPort uint16 RemoteAddress net.IP RemotePort uint16 Inode uint64 Proc Proc Listening bool }
Connection is a (TCP) connection. The Proc struct might not be filled in.
type ConnectionScanner ¶
type ConnectionScanner interface { // Connections returns all established (TCP) connections. Connections() (ConnIter, error) // Stops the scanning Stop() }
ConnectionScanner scans the system for established (TCP) connections
func NewConnectionScanner ¶
func NewConnectionScanner(walker Walker, procRoot string, processes bool) ConnectionScanner
NewConnectionScanner creates a new Linux ConnectionScanner
func NewSyncConnectionScanner ¶
func NewSyncConnectionScanner(walker Walker, procRoot string, processes bool) ConnectionScanner
NewSyncConnectionScanner creates a new synchronous Linux ConnectionScanner
type ProcNet ¶
type ProcNet struct {
// contains filtered or unexported fields
}
ProcNet is an iterator to parse /proc/net/tcp{,6} files.
func (*ProcNet) Next ¶
func (p *ProcNet) Next() *Connection
Next returns the next connection. All buffers are re-used, so if you want to keep the IPs you have to copy them.