Documentation
¶
Overview ¶
Provides remote file and command functions
Index ¶
- Variables
- func CopyAll(srcHost Host, srcDir string, dstHost Host, dstDir string) (err error)
- func CopyFile(srcHost Host, srcPath string, dstHost Host, dstPath string) (err error)
- func GetFileOwner(h Host, info fs.FileInfo) (uid, gid int)
- type Host
- type Local
- func (h *Local) Abs(dir string) (abs string, err error)
- func (h *Local) Base(path string) string
- func (h *Local) Chown(name string, uid, gid int) (err error)
- func (h *Local) Chtimes(path string, atime time.Time, mtime time.Time) (err error)
- func (h *Local) Create(p string, perms fs.FileMode) (out io.WriteCloser, err error)
- func (h *Local) Dir(path string) string
- func (h *Local) Ext(path string) string
- func (h *Local) GetFs() afero.Fs
- func (h *Local) Getwd() (dir string, err error)
- func (h *Local) Glob(pattern string) (paths []string, err error)
- func (h *Local) HostPath(p string) string
- func (h *Local) Hostname() string
- func (h *Local) IsAbs(name string) bool
- func (h *Local) IsAvailable() (bool, error)
- func (h *Local) IsLocalhost() bool
- func (h *Local) Join(elem ...string) string
- func (h *Local) LastError() error
- func (h *Local) Lchown(name string, uid, gid int) (err error)
- func (h *Local) Lchtimes(path string, atime time.Time, mtime time.Time) (err error)
- func (h *Local) Link(oldname, newname string) (err error)
- func (h *Local) Lstat(name string) (f fs.FileInfo, err error)
- func (h *Local) Mkdir(p string, perm os.FileMode) (err error)
- func (h *Local) MkdirAll(p string, perm os.FileMode) (err error)
- func (h *Local) OS() string
- func (h *Local) Open(name string) (f io.ReadSeekCloser, err error)
- func (h *Local) ReadDir(name string) (dirs []os.DirEntry, err error)
- func (h *Local) ReadFile(name string) (b []byte, err error)
- func (h *Local) Readlink(file string) (link string, err error)
- func (h *Local) Remove(name string) (err error)
- func (h *Local) RemoveAll(name string) (err error)
- func (h *Local) Rename(oldpath, newpath string) (err error)
- func (h *Local) Run(cmd *exec.Cmd, options ...ProcessOption) (output []byte, err error)
- func (h *Local) ServerVersion() string
- func (h *Local) Signal(pid int, signal syscall.Signal) (err error)
- func (h *Local) Split(path string) (dir, file string)
- func (h *Local) Start(cmd *exec.Cmd, options ...ProcessOption) (pid int, err error)
- func (h *Local) Stat(name string) (f fs.FileInfo, err error)
- func (h *Local) String() string
- func (h *Local) Symlink(oldname, newname string) (err error)
- func (h *Local) TempDir() string
- func (h *Local) ToSlash(path string) string
- func (h *Local) Uname() (os, arch string, err error)
- func (h *Local) Username() string
- func (h *Local) VolumeName(path string) string
- func (h *Local) WalkDir(dir string, fn fs.WalkDirFunc) error
- func (h *Local) WriteFile(name string, data []byte, perm os.FileMode) (err error)
- type ProcessOption
- type SSHOption
- type SSHRemote
- func (h *SSHRemote) Abs(dir string) (string, error)
- func (h *SSHRemote) Base(file string) string
- func (h *SSHRemote) Chown(name string, uid, gid int) error
- func (h *SSHRemote) Chtimes(path string, atime time.Time, mtime time.Time) (err error)
- func (h *SSHRemote) Close()
- func (h *SSHRemote) CloseSFTP()
- func (h *SSHRemote) Create(p string, perms fs.FileMode) (out io.WriteCloser, err error)
- func (h *SSHRemote) DialSFTP() (f *sftp.Client, err error)
- func (h *SSHRemote) DialSSH() (sc *ssh.Client, err error)
- func (h *SSHRemote) Dir(file string) string
- func (h *SSHRemote) Ext(file string) string
- func (h *SSHRemote) GetFs() afero.Fs
- func (h *SSHRemote) Getwd() (dir string, err error)
- func (h *SSHRemote) Glob(pattern string) ([]string, error)
- func (h *SSHRemote) HostPath(p string) string
- func (s *SSHRemote) Hostname() string
- func (h *SSHRemote) IsAbs(name string) bool
- func (h *SSHRemote) IsAvailable() (ok bool, err error)
- func (h *SSHRemote) IsLocalhost() bool
- func (h *SSHRemote) Join(elem ...string) string
- func (h *SSHRemote) LastError() error
- func (h *SSHRemote) Lchown(name string, uid, gid int) error
- func (h *SSHRemote) Lchtimes(path string, atime time.Time, mtime time.Time) (err error)
- func (h *SSHRemote) Link(oldname, newname string) error
- func (h *SSHRemote) Lstat(name string) (fs.FileInfo, error)
- func (h *SSHRemote) Mkdir(p string, perm os.FileMode) error
- func (h *SSHRemote) MkdirAll(p string, perm os.FileMode) error
- func (h *SSHRemote) NewSession() (sess *ssh.Session, err error)
- func (h *SSHRemote) OS() string
- func (h *SSHRemote) Open(name string) (io.ReadSeekCloser, error)
- func (h *SSHRemote) ReadDir(name string) (dirs []os.DirEntry, err error)
- func (h *SSHRemote) ReadFile(name string) (b []byte, err error)
- func (h *SSHRemote) Readlink(file string) (string, error)
- func (h *SSHRemote) Remove(name string) error
- func (h *SSHRemote) RemoveAll(name string) (err error)
- func (h *SSHRemote) Rename(oldpath, newpath string) error
- func (h *SSHRemote) Run(cmd *exec.Cmd, options ...ProcessOption) (output []byte, err error)
- func (h *SSHRemote) ServerVersion() string
- func (h *SSHRemote) Signal(pid int, signal syscall.Signal) (err error)
- func (h *SSHRemote) Split(file string) (dir, base string)
- func (h *SSHRemote) Start(cmd *exec.Cmd, options ...ProcessOption) (pid int, err error)
- func (h *SSHRemote) Stat(name string) (fs.FileInfo, error)
- func (h *SSHRemote) String() string
- func (h *SSHRemote) Symlink(oldname, newname string) error
- func (h *SSHRemote) TempDir() string
- func (h *SSHRemote) ToSlash(path string) string
- func (h *SSHRemote) Uname() (os, arch string, err error)
- func (h *SSHRemote) Username() string
- func (h *SSHRemote) VolumeName(path string) string
- func (h *SSHRemote) WalkDir(dir string, fn fs.WalkDirFunc) error
- func (h *SSHRemote) WriteFile(name string, data []byte, perm os.FileMode) (err error)
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidArgs TODO: Describe its purpose and intended use. ErrInvalidArgs = errors.New("invalid arguments") // ErrNotSupported TODO: Describe its purpose and intended use. ErrNotSupported = errors.New("not supported") // ErrNotAvailable TODO: Describe its purpose and intended use. ErrNotAvailable = errors.New("not available") // ErrExist TODO: Describe its purpose and intended use. ErrExist = errors.New("already exists") // ErrNotExist TODO: Describe its purpose and intended use. ErrNotExist = errors.New("does not exist") )
var ListSeparators = map[string]string{
"windows": `;`,
"linux": ":",
"darwin": ":",
}
ListSeparators for separating lists of paths, e.g. in PATH environment variables, by OS
var Localhost = NewLocal()
Localhost is a Host backed by the current machine.
var Seperators = map[string]string{
"windows": `\`,
"linux": "/",
"darwin": "/",
}
Separators for file paths and lists, by OS
Functions ¶
Types ¶
type Host ¶
type Host interface {
// informational
String() string
GetFs() afero.Fs
HostPath(p string) string // return the path as a string, prefixed with "host:" if not local
Hostname() string
ServerVersion() string // return the SSH server version if remote, or the same as OS() if local
OS() string // return whatever runtime.GOOS would return for the host
IsAvailable() (bool, error)
IsLocalhost() bool
LastError() error
Uname() (string, string, error)
Username() string
// filepath operations
Abs(name string) (string, error)
Base(string) string
// Clean()
Dir(string) string
// EvalSymlinks()
Ext(string) string
IsAbs(name string) bool
// IsLocal()
Join(...string) string
// Localize()
// Match()
// Rel()
Split(string) (dir, file string)
// SplitList()
ToSlash(string) string
VolumeName(string) string
// Walk()
WalkDir(dir string, fn fs.WalkDirFunc) error
// file operations
Getwd() (dir string, err error)
Chown(name string, uid, gid int) (err error)
Chtimes(path string, atime time.Time, mtime time.Time) (err error)
Glob(pattern string) (paths []string, err error)
Link(oldname, newname string) (err error)
Lchown(name string, uid, gid int) (err error)
Lchtimes(path string, atime time.Time, mtime time.Time) (err error)
Lstat(name string) (f fs.FileInfo, err error)
Mkdir(name string, perm os.FileMode) (err error)
MkdirAll(p string, perm os.FileMode) (err error)
ReadDir(name string) (dirs []os.DirEntry, err error)
ReadFile(name string) (b []byte, err error)
Readlink(file string) (link string, err error)
Remove(name string) (err error)
RemoveAll(name string) (err error)
Rename(oldpath, newpath string) (err error)
Stat(name string) (f fs.FileInfo, err error)
Symlink(oldname, newname string) (err error)
TempDir() string
WriteFile(name string, data []byte, perm os.FileMode) (err error)
// these two do not conform to the afero / os interface
Open(name string) (f io.ReadSeekCloser, err error)
Create(p string, perms fs.FileMode) (out io.WriteCloser, err error)
// process control
Signal(pid int, signal syscall.Signal) (err error)
Start(cmd *exec.Cmd, options ...ProcessOption) (pid int, err error)
Run(cmd *exec.Cmd, options ...ProcessOption) (stdout []byte, err error)
}
Host encapsulates all the methods required by callers to manage Geneos installs on a host.
This should have been based on (and extending) something like Afero, but this was quicker for the moment. This interface also provides process handling etc.
func NewLocal ¶
func NewLocal() Host
NewLocal returns a Host that performs operations on the current machine.
func NewSSHRemote ¶
NewSSHRemote returns a new SSHRemote with the given name and options. The name is used as the key for caching SSH and SFTP sessions and so should be unique for each remote host. Options are used to set the hostname, port, username and authentication method (password or private keys) for the remote host. If no options are given then the local username is used and the hostname is set to the name of the remote.
type Local ¶
type Local struct {
}
Local implements Host operations against the current machine and filesystem.
func (*Local) Abs ¶ added in v1.6.0
Abs returns dir as an absolute local path with slash separators.
func (*Local) Base ¶ added in v1.27.1
Base returns the final path element using the local operating system's rules.
func (*Local) Chtimes ¶ added in v1.14.2
Chtimes changes the access and modification times of a local filesystem path.
func (*Local) Create ¶
Create opens p for writing, creating or truncating it with the supplied permissions.
func (*Local) Dir ¶ added in v1.27.1
Dir returns the directory portion of path using local path rules.
func (*Local) HostPath ¶ added in v1.14.2
HostPath returns p unchanged because local paths need no host translation.
func (*Local) IsAbs ¶ added in v1.14.2
IsAbs reports whether name is an absolute path on the local operating system.
func (*Local) IsAvailable ¶
IsAvailable reports that the local host is available.
func (*Local) IsLocalhost ¶ added in v1.27.1
IsLocalhost reports whether h represents the current machine.
func (*Local) LastError ¶
LastError returns nil because local host operations do not cache connection errors.
func (*Local) Lchown ¶
Lchown changes the owner and group of a local path without following a symlink.
func (*Local) Lchtimes ¶ added in v1.14.2
Lchtimes TODO: Document its behavior, inputs, and effects.
func (*Local) Mkdir ¶ added in v1.26.0
Mkdir creates one local directory with the supplied permissions.
func (*Local) MkdirAll ¶
MkdirAll creates p and any missing parent directories with the supplied permissions.
func (*Local) Open ¶
func (h *Local) Open(name string) (f io.ReadSeekCloser, err error)
Open opens name for reading and returns a seekable read-closer.
func (*Local) ReadDir ¶
ReadDir reads the named directory and returns all its directory entries sorted by name.
func (*Local) Run ¶
Run starts a program, waits for completion and returns the output and/or any error. errfile is either absolute or relative to home.
func (*Local) ServerVersion ¶
ServerVersion returns the local operating-system identifier.
func (*Local) Start ¶
Start launches cmd on the local host, detaching it unless options override process setup. Standard output and error are written to the configured error log.
func (*Local) TempDir ¶ added in v1.6.3
TempDir returns the local operating system's temporary directory.
func (*Local) VolumeName ¶ added in v1.27.1
VolumeName returns the volume component of path, if the operating system has one.
type ProcessOption ¶ added in v1.27.0
type ProcessOption func(*processOptions)
ProcessOption TODO: Describe its purpose and intended use.
func ProcessAllowCoreDumps ¶ added in v1.27.0
func ProcessAllowCoreDumps() ProcessOption
ProcessAllowCoreDumps TODO: Document its behavior, inputs, and effects.
func ProcessCPUAffinity ¶ added in v1.28.0
func ProcessCPUAffinity(cpus ...int) ProcessOption
ProcessCPUAffinity TODO: Document its behavior, inputs, and effects.
func ProcessDetach ¶ added in v1.26.0
func ProcessDetach() ProcessOption
ProcessDetach makes the process run detached from the parent
func ProcessErrfile ¶ added in v1.26.0
func ProcessErrfile(errfile string) ProcessOption
ProcessErrfile TODO: Document its behavior, inputs, and effects.
type SSHOption ¶ added in v1.27.0
type SSHOption func(*SSHRemote)
SSHOption TODO: Describe its purpose and intended use.
func PrivateKeyFiles ¶ added in v1.14.2
PrivateKeyFiles add the given paths as private key files to use for SSH connections. The files must (at this time) not be passphrase protected.
type SSHRemote ¶
type SSHRemote struct {
// contains filtered or unexported fields
}
An SSHRemote a type that satisfies the Host interface for SSH attached remote hosts
func (*SSHRemote) Chtimes ¶ added in v1.14.2
Chtimes TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) CloseSFTP ¶
func (h *SSHRemote) CloseSFTP()
CloseSFTP TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) DialSFTP ¶
DialSFTP connects to the remote host using SSH and returns an *sftp.Client is successful. The connection is cached and returned if found, without checking if it is still valid.
func (*SSHRemote) DialSSH ¶ added in v1.27.0
DialSSH connects to a remote host using ssh and returns an *ssh.Client on success. Each connection is cached and returned if found without checking if it is still valid. To remove a session call Close()
func (*SSHRemote) HostPath ¶ added in v1.14.2
HostPath TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) Hostname ¶ added in v1.6.0
Hostname TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) IsAbs ¶ added in v1.14.2
IsAbs run from unix will use path.IsAbs unless the remote is windows in which case it checks the volume name, stripping it and testing the rest of the path
func (*SSHRemote) IsAvailable ¶
IsAvailable returns true is the remote host can be contacted
func (*SSHRemote) IsLocalhost ¶ added in v1.27.1
IsLocalhost returns true if h is local, which for SSH is always false
func (*SSHRemote) Lchtimes ¶ added in v1.14.2
Lchtimes TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) NewSession ¶ added in v1.10.2
NewSession wraps ssh.NewSession but does some retries
func (*SSHRemote) Open ¶
func (h *SSHRemote) Open(name string) (io.ReadSeekCloser, error)
Open TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) ReadDir ¶
ReadDir reads the named directory and returns all its directory entries sorted by name.
func (*SSHRemote) Run ¶
Run starts a process on an SSH attached remote host h. It uses a shell and waits for the process status before returning. It returns the output and any error. errfile is an optional (remote) file for stderr output
func (*SSHRemote) ServerVersion ¶
ServerVersion TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) Signal ¶
Signal sends a signal to the remote pid and returns nil on success or os.ProcessDone if the process is not found.
func (*SSHRemote) Start ¶
Start starts a process on an SSH attached remote host h. It uses a shell and backgrounds and redirects. May not work on all remotes and for all processes. errfile has stdout/stderr appended to it, use '/dev/null' if no errfile is wanted.
func (*SSHRemote) TempDir ¶ added in v1.6.3
TempDir returns a path on the remote to a temporary directory
BUG This is currently broken - hardwired values for now
func (*SSHRemote) ToSlash ¶ added in v1.27.1
ToSlash TODO: Document its behavior, inputs, and effects.
func (*SSHRemote) VolumeName ¶ added in v1.27.1
VolumeName TODO: Document its behavior, inputs, and effects.