executor

package
v1.15.1 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2024 License: Apache-2.0 Imports: 27 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// ErrPropSSHCommand is ErrPropSSHCommand
	ErrPropSSHCommand = errorx.RegisterPrintableProperty("ssh_command")
	// ErrPropSSHStdout is ErrPropSSHStdout
	ErrPropSSHStdout = errorx.RegisterPrintableProperty("ssh_stdout")
	// ErrPropSSHStderr is ErrPropSSHStderr
	ErrPropSSHStderr = errorx.RegisterPrintableProperty("ssh_stderr")

	// ErrSSHExecuteFailed is ErrSSHExecuteFailed
	ErrSSHExecuteFailed = errNSSSH.NewType("execute_failed")
	// ErrSSHExecuteTimedout is ErrSSHExecuteTimedout
	ErrSSHExecuteTimedout = errNSSSH.NewType("execute_timedout")
)

Functions

func FindSSHAuthorizedKeysFile added in v1.3.0

func FindSSHAuthorizedKeysFile(ctx context.Context, exec ctxt.Executor) string

FindSSHAuthorizedKeysFile finds the correct path of SSH authorized keys file

func New added in v1.2.0

func New(etype SSHType, sudo bool, c SSHConfig) (ctxt.Executor, error)

New create a new Executor

func ScpDownload added in v1.5.0

func ScpDownload(session *ssh.Session, client *ssh.Client, src, dst string, limit int, compress bool) error

ScpDownload downloads a file from remote with SCP The implementation is partially inspired by github.com/dtylman/scp Do not support pattern, src and dst must be dir or file path

func UnwarpCheckPointExecutor added in v1.14.0

func UnwarpCheckPointExecutor(e ctxt.Executor) ctxt.Executor

UnwarpCheckPointExecutor unwarp the CheckPointExecutor and return the real executor

Sometimes we just want to get the output of a command, and the CheckPointExecutor will always cache the output, it will be a problem when we want to get the real output.

Types

type CheckPointExecutor added in v1.4.0

type CheckPointExecutor struct {
	ctxt.Executor
	// contains filtered or unexported fields
}

CheckPointExecutor wraps Executor and inject checkpoints

ATTENTION please: the result of CheckPointExecutor shouldn't be used to impact
                  external system like PD, otherwise, the external system may
                  take wrong action.

func (*CheckPointExecutor) Execute added in v1.4.0

func (c *CheckPointExecutor) Execute(ctx context.Context, cmd string, sudo bool, timeout ...time.Duration) (stdout []byte, stderr []byte, err error)

Execute implements Executor interface.

func (*CheckPointExecutor) Transfer added in v1.4.0

func (c *CheckPointExecutor) Transfer(ctx context.Context, src, dst string, download bool, limit int, compress bool) (err error)

Transfer implements Executer interface.

type EasySSHExecutor added in v1.0.9

type EasySSHExecutor struct {
	Config *easyssh.MakeConfig
	Locale string // the locale used when executing the command
	Sudo   bool   // all commands run with this executor will be using sudo
}

EasySSHExecutor implements Executor with EasySSH as transportation layer.

func (*EasySSHExecutor) Execute added in v1.0.9

func (e *EasySSHExecutor) Execute(ctx context.Context, cmd string, sudo bool, timeout ...time.Duration) ([]byte, []byte, error)

Execute run the command via SSH, it's not invoking any specific shell by default.

func (*EasySSHExecutor) Transfer added in v1.0.9

func (e *EasySSHExecutor) Transfer(ctx context.Context, src, dst string, download bool, limit int, compress bool) error

Transfer copies files via SCP This function depends on `scp` (a tool from OpenSSH or other SSH implementation) This function is based on easyssh.MakeConfig.Scp() but with support of copying file from remote to local.

type Local added in v1.1.0

type Local struct {
	Config *SSHConfig
	Sudo   bool   // all commands run with this executor will be using sudo
	Locale string // the locale used when executing the command
}

Local execute the command at local host.

func (*Local) Execute added in v1.1.0

func (l *Local) Execute(ctx context.Context, cmd string, sudo bool, timeout ...time.Duration) ([]byte, []byte, error)

Execute implements Executor interface.

func (*Local) Transfer added in v1.1.0

func (l *Local) Transfer(ctx context.Context, src, dst string, download bool, limit int, _ bool) error

Transfer implements Executer interface.

type NativeSSHExecutor added in v1.0.9

type NativeSSHExecutor struct {
	Config               *SSHConfig
	Locale               string // the locale used when executing the command
	Sudo                 bool   // all commands run with this executor will be using sudo
	ConnectionTestResult error  // test if the connection can be established in initialization phase
}

NativeSSHExecutor implements Excutor with native SSH transportation layer.

func (*NativeSSHExecutor) Execute added in v1.0.9

func (e *NativeSSHExecutor) Execute(ctx context.Context, cmd string, sudo bool, timeout ...time.Duration) ([]byte, []byte, error)

Execute run the command via SSH, it's not invoking any specific shell by default.

func (*NativeSSHExecutor) Transfer added in v1.0.9

func (e *NativeSSHExecutor) Transfer(ctx context.Context, src, dst string, download bool, limit int, compress bool) error

Transfer copies files via SCP This function depends on `scp` (a tool from OpenSSH or other SSH implementation)

type SSHConfig

type SSHConfig struct {
	Host       string        // hostname of the SSH server
	Port       int           // port of the SSH server
	User       string        // username to login to the SSH server
	Password   string        // password of the user
	KeyFile    string        // path to the private key file
	Passphrase string        // passphrase of the private key file
	Timeout    time.Duration // Timeout is the maximum amount of time for the TCP connection to establish.
	ExeTimeout time.Duration // ExeTimeout is the maximum amount of time for the command to finish
	Proxy      *SSHConfig    // ssh proxy config
}

SSHConfig is the configuration needed to establish SSH connection.

type SSHType added in v1.2.0

type SSHType string

SSHType represent the type of the chanel used by ssh

var (

	// SSHTypeBuiltin is the type of easy ssh executor
	SSHTypeBuiltin SSHType = "builtin"

	// SSHTypeSystem is the type of host ssh client
	SSHTypeSystem SSHType = "system"

	// SSHTypeNone is the type of local executor (no ssh will be used)
	SSHTypeNone SSHType = "none"
)

Jump to

Keyboard shortcuts

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