run

package
v0.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2022 License: MIT Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultTimeout = 20 * time.Second
View Source
var ResetColor = "\033[0m"

Functions

func AddKnownHost

func AddKnownHost(host string, remote net.Addr, key ssh.PublicKey, knownFile string) (err error)

func AsExport

func AsExport(env []string) string

Process all ENVs into a string of form Example output: export FOO="bar"; export BAR="baz";

func CheckKnownHost

func CheckKnownHost(host string, remote net.Addr, key ssh.PublicKey, knownFile string) (found bool, err error)

func ExecTTY

func ExecTTY(cmd string, envs []string) error

func FingerprintSHA256 added in v0.12.0

func FingerprintSHA256(b []byte) string

func GetFingerprintPubKey added in v0.12.0

func GetFingerprintPubKey(server dao.Server) (string, error)

func GetPasswordAuth added in v0.10.3

func GetPasswordAuth(server dao.Server) (ssh.AuthMethod, error)

func GetPasswordIdentitySigner added in v0.12.0

func GetPasswordIdentitySigner(server dao.Server) (ssh.Signer, error)

Password protected key

func GetSSHAgentSigners added in v0.10.3

func GetSSHAgentSigners() ([]ssh.Signer, error)

func GetSigner added in v0.12.0

func GetSigner(server dao.Server) (ssh.Signer, error)

func HeaderTemplate added in v0.10.0

func HeaderTemplate(header string, data HeaderData) (string, error)

func Line added in v0.10.0

func Line(address string, key ssh.PublicKey) string

TODO: Replace this method with known_hosts Line method when issue with ip6 formats is fixed. Supported Host formats:

172.24.2.3
172.24.2.3:333 # custom port
2001:3984:3989::10
[2001:3984:3989::10]:333 # custom port

func RunTableCmd

func RunTableCmd(t TaskContext, data dao.TableOutput, dataMutex *sync.RWMutex, wg *sync.WaitGroup) error

func RunTextCmd

func RunTextCmd(t TaskContext, textStyle dao.Text, prefix string, parallel bool, wg *sync.WaitGroup) error

func SSHToServer

func SSHToServer(server dao.Server, disableVerifyHost bool, knownHostFile string) error

func SSHToServer(host string, user string, port uint16, bastion string, disableVerifyHost bool, knownHostFile string) error {

func VerifyHost

func VerifyHost(knownHostsFile string, mu *sync.Mutex, host string, remote net.Addr, key ssh.PublicKey) error

VerifyHost validates that the host is found in known_hosts file

Types

type Client

type Client interface {
	Connect(bool, string, *sync.Mutex, SSHDialFunc) *ErrConnect
	Run([]string, string, string, string) error
	Wait() error
	Close() error
	Prefix() string
	Write(p []byte) (n int, err error)
	WriteClose() error
	Stdin() io.WriteCloser
	Stderr() io.Reader
	Stdout() io.Reader
	Signal(os.Signal) error
	GetName() string
}

type ErrConnect

type ErrConnect struct {
	Name   string
	Host   string
	User   string
	Port   uint16
	Reason string
}

func ParseServers added in v0.11.0

func ParseServers(sshConfigFile *string, servers *[]dao.Server, runFlags *core.RunFlags) ([]ErrConnect, error)

ParseServers resolves host, port, proxyjump in users ssh config

func (*ErrConnect) Error added in v0.10.3

func (e *ErrConnect) Error() string

type HeaderData added in v0.10.0

type HeaderData struct {
	Name     string
	Desc     string
	Index    int
	NumTasks int
}

func (HeaderData) Style added in v0.10.0

func (h HeaderData) Style(s any, args ...string) string

type Identity

type Identity struct {
	IdentityFile *string
	Password     *string
}

type LocalhostClient

type LocalhostClient struct {
	Name string
	User string
	Host string
	// contains filtered or unexported fields
}

Client is a wrapper over the SSH connection/sessions.

func (*LocalhostClient) Close

func (c *LocalhostClient) Close() error

func (*LocalhostClient) Connect

func (c *LocalhostClient) Connect(_ bool, _ string, mu *sync.Mutex, dialer SSHDialFunc) *ErrConnect

func (*LocalhostClient) GetName added in v0.10.2

func (c *LocalhostClient) GetName() string

func (*LocalhostClient) Prefix

func (c *LocalhostClient) Prefix() string

func (*LocalhostClient) Run

func (c *LocalhostClient) Run(env []string, workDir string, shell string, cmdStr string) error

func (*LocalhostClient) Signal

func (c *LocalhostClient) Signal(sig os.Signal) error

func (*LocalhostClient) Stderr

func (c *LocalhostClient) Stderr() io.Reader

func (*LocalhostClient) Stdin

func (c *LocalhostClient) Stdin() io.WriteCloser

func (*LocalhostClient) Stdout

func (c *LocalhostClient) Stdout() io.Reader

func (*LocalhostClient) Wait

func (c *LocalhostClient) Wait() error

func (*LocalhostClient) Write

func (c *LocalhostClient) Write(p []byte) (n int, err error)

func (*LocalhostClient) WriteClose

func (c *LocalhostClient) WriteClose() error

type Run

type Run struct {
	LocalClients  map[string]Client
	RemoteClients map[string]Client
	Servers       []dao.Server
	Task          *dao.Task
	Config        dao.Config
}

func (*Run) CheckTaskNoColor

func (run *Run) CheckTaskNoColor()

func (*Run) CleanupClients

func (run *Run) CleanupClients()

func (*Run) ParseTask

func (run *Run) ParseTask(configEnv []string, userArgs []string, runFlags *core.RunFlags, setRunFlags *core.SetRunFlags) error

func (*Run) RunTask

func (run *Run) RunTask(
	userArgs []string,
	runFlags *core.RunFlags,
	setRunFlags *core.SetRunFlags,
) error

func (*Run) SetClients

func (run *Run) SetClients(
	runFlags *core.RunFlags,
	numChannels int,
	clientCh chan Client,
	errCh chan ErrConnect,
) ([]ErrConnect, error)

SetClients establishes connection to server

func (*Run) Table

func (run *Run) Table(dryRun bool) (dao.TableOutput, error)

func (*Run) TableWork

func (run *Run) TableWork(rIndex int, dryRun bool, data dao.TableOutput, dataMutex *sync.RWMutex) error

func (*Run) Text

func (run *Run) Text(dryRun bool) error

func (*Run) TextWork

func (run *Run) TextWork(rIndex int, prefixMaxLen int, dryRun bool) error

type SSHClient

type SSHClient struct {
	Name         string
	User         string
	Host         string
	Port         uint16
	IdentityFile string
	Password     string
	AuthMethod   []ssh.AuthMethod
	// contains filtered or unexported fields
}

Client is a wrapper over the SSH connection/sessions.

func (*SSHClient) Close

func (c *SSHClient) Close() error

Close closes the underlying SSH connection and session.

func (*SSHClient) Connect

func (c *SSHClient) Connect(disableVerifyHost bool, knownHostsFile string, mu *sync.Mutex, dialer SSHDialFunc) *ErrConnect

Connect creates SSH connection to a specified host.

func (*SSHClient) ConnectWith

func (c *SSHClient) ConnectWith(dialer SSHDialFunc, disableVerifyHost bool, knownHostsFile string, mu *sync.Mutex) *ErrConnect

ConnectWith creates a SSH connection to a specified host. It will use dialer to establish the connection.

func (*SSHClient) DialThrough

func (c *SSHClient) DialThrough(net, addr string, config *ssh.ClientConfig) (*ssh.Client, error)

DialThrough will create a new connection from the ssh server c is connected to. DialThrough is an SSHDialer.

func (*SSHClient) GetName added in v0.10.2

func (c *SSHClient) GetName() string

func (*SSHClient) Prefix

func (c *SSHClient) Prefix() string

func (*SSHClient) Run

func (c *SSHClient) Run(env []string, workDir string, shell string, cmdStr string) error

Run runs a command remotely on c.host.

func (*SSHClient) Signal

func (c *SSHClient) Signal(sig os.Signal) error

func (*SSHClient) Stderr

func (c *SSHClient) Stderr() io.Reader

func (*SSHClient) Stdin

func (c *SSHClient) Stdin() io.WriteCloser

func (*SSHClient) Stdout

func (c *SSHClient) Stdout() io.Reader

func (*SSHClient) Wait

func (c *SSHClient) Wait() error

Wait waits until the remote command finishes and exits. It closes the SSH session.

func (*SSHClient) Write

func (c *SSHClient) Write(p []byte) (n int, err error)

func (*SSHClient) WriteClose

func (c *SSHClient) WriteClose() error

type SSHDialFunc

type SSHDialFunc func(net, addr string, config *ssh.ClientConfig) (*ssh.Client, error)

SSHDialFunc can dial an ssh server and return a client

type Signers added in v0.12.0

type Signers struct {
	// contains filtered or unexported fields
}

type TaskContext

type TaskContext struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL