run

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2022 License: MIT Imports: 24 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(host string, user string, port uint8, cmd string, envs []string) error

func InitAuthMethod

func InitAuthMethod(globalIdentityFile string, globalPassword string, identities []Identity) (ssh.AuthMethod, error)

InitAuthMethod initiates SSH authentication method. if identity_file, use that file if identity_file + passphrase, use that file with the passphrase if passphrase, use passphrase connect if nothing, attempt to use SSH Agent

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(host string, user string, port uint8, 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) *ErrConnect
	Run([]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
	GetHost() string
}

type ErrConnect

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

type Identity

type Identity struct {
	IdentityFile *string
	Password     *string
}

type LocalhostClient

type LocalhostClient struct {
	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) *ErrConnect

func (*LocalhostClient) GetHost

func (c *LocalhostClient) GetHost() string

func (*LocalhostClient) Prefix

func (c *LocalhostClient) Prefix() string

func (*LocalhostClient) Run

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

func (c *LocalhostClient) Run(envs 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 InitAuthMethod if identity_file, use that file if identity_file + passphrase, use that file with the passphrase if passphrase, use passphrase connect if nothing, attempt to use SSH Agent

func (*Run) Table

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

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)

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         uint8
	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) *ErrConnect

Connect creates SSH connection to a specified host. It expects the host of the form "[ssh://]host[:port]".

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 (sc *SSHClient) DialThrough(net, addr string, config *ssh.ClientConfig) (*ssh.Client, error)

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

func (*SSHClient) GetHost

func (c *SSHClient) GetHost() string

func (*SSHClient) Prefix

func (c *SSHClient) Prefix() string

func (*SSHClient) Run

func (c *SSHClient) Run(env []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 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