winrm: github.com/masterzen/winrm Index | Files | Directories

package winrm

import "github.com/masterzen/winrm"

Index

Package Files

auth.go client.go command.go endpoint.go error.go http.go ntlm.go parameters.go powershell.go request.go response.go shell.go

Variables

var DefaultParameters = NewParameters("PT60S", "en-US", 153600)

DefaultParameters return constant config of type Parameters

func NewClientWithDial Uses

func NewClientWithDial(dial func(network, addr string) (net.Conn, error)) *clientRequest

func NewDeleteShellRequest Uses

func NewDeleteShellRequest(uri, shellId string, params *Parameters) *soap.SoapMessage

NewDeleteShellRequest ...

func NewExecuteCommandRequest Uses

func NewExecuteCommandRequest(uri, shellId, command string, arguments []string, params *Parameters) *soap.SoapMessage

NewExecuteCommandRequest exec command on specific shellID

func NewGetOutputRequest Uses

func NewGetOutputRequest(uri, shellId, commandId, streams string, params *Parameters) *soap.SoapMessage

func NewOpenShellRequest Uses

func NewOpenShellRequest(uri string, params *Parameters) *soap.SoapMessage

NewOpenShellRequest makes a new soap request

func NewSendInputRequest Uses

func NewSendInputRequest(uri, shellId, commandId string, input []byte, params *Parameters) *soap.SoapMessage

func NewSignalRequest Uses

func NewSignalRequest(uri string, shellId string, commandId string, params *Parameters) *soap.SoapMessage

func ParseExecuteCommandResponse Uses

func ParseExecuteCommandResponse(response string) (string, error)

func ParseOpenShellResponse Uses

func ParseOpenShellResponse(response string) (string, error)

func ParseSlurpOutputErrResponse Uses

func ParseSlurpOutputErrResponse(response string, stdout, stderr io.Writer) (bool, int, error)

func ParseSlurpOutputResponse Uses

func ParseSlurpOutputResponse(response string, stream io.Writer, streamType string) (bool, int, error)

func Powershell Uses

func Powershell(psCmd string) string

Powershell wraps a PowerShell script and prepares it for execution by the winrm client

type Client Uses

type Client struct {
    Parameters
    // contains filtered or unexported fields
}

Client struct

func NewClient Uses

func NewClient(endpoint *Endpoint, user, password string) (*Client, error)

NewClient will create a new remote client on url, connecting with user and password This function doesn't connect (connection happens only when CreateShell is called)

func NewClientWithParameters Uses

func NewClientWithParameters(endpoint *Endpoint, user, password string, params *Parameters) (*Client, error)

NewClientWithParameters will create a new remote client on url, connecting with user and password This function doesn't connect (connection happens only when CreateShell is called)

func (*Client) CreateShell Uses

func (c *Client) CreateShell() (*Shell, error)

CreateShell will create a WinRM Shell, which is the prealable for running commands.

func (*Client) NewShell Uses

func (c *Client) NewShell(id string) *Shell

NewShell will create a new WinRM Shell for the given shellID

func (*Client) Run Uses

func (c *Client) Run(command string, stdout io.Writer, stderr io.Writer) (int, error)

Run will run command on the the remote host, writing the process stdout and stderr to the given writers. Note with this method it isn't possible to inject stdin.

func (Client) RunWithInput Uses

func (c Client) RunWithInput(command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)

RunWithInput will run command on the the remote host, writing the process stdout and stderr to the given writers, and injecting the process stdin with the stdin reader. Warning stdin (not stdout/stderr) are bufferized, which means reading only one byte in stdin will send a winrm http packet to the remote host. If stdin is a pipe, it might be better for performance reasons to buffer it.

func (*Client) RunWithString Uses

func (c *Client) RunWithString(command string, stdin string) (string, string, int, error)

RunWithString will run command on the the remote host, returning the process stdout and stderr as strings, and using the input stdin string as the process input

type ClientAuthRequest Uses

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

func NewClientAuthRequestWithDial Uses

func NewClientAuthRequestWithDial(dial func(network, addr string) (net.Conn, error)) *ClientAuthRequest

func (ClientAuthRequest) Post Uses

func (c ClientAuthRequest) Post(client *Client, request *soap.SoapMessage) (string, error)

func (*ClientAuthRequest) Transport Uses

func (c *ClientAuthRequest) Transport(endpoint *Endpoint) error

type ClientNTLM Uses

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

ClientNTLM provides a transport via NTLMv2

func NewClientNTLMWithDial Uses

func NewClientNTLMWithDial(dial func(network, addr string) (net.Conn, error)) *ClientNTLM

func (ClientNTLM) Post Uses

func (c ClientNTLM) Post(client *Client, request *soap.SoapMessage) (string, error)

Post make post to the winrm soap service (forwarded to clientRequest implementation)

func (*ClientNTLM) Transport Uses

func (c *ClientNTLM) Transport(endpoint *Endpoint) error

Transport creates the wrapped NTLM transport

type Command Uses

type Command struct {
    Stdin  *commandWriter
    Stdout *commandReader
    Stderr *commandReader
    // contains filtered or unexported fields
}

Command represents a given command running on a Shell. This structure allows to get access to the various stdout, stderr and stdin pipes.

func (*Command) Close Uses

func (c *Command) Close() error

Close will terminate the running command

func (*Command) ExitCode Uses

func (c *Command) ExitCode() int

ExitCode returns command exit code when it is finished. Before that the result is always 0.

func (*Command) Wait Uses

func (c *Command) Wait()

Wait function will block the current goroutine until the remote command terminates.

type Endpoint Uses

type Endpoint struct {
    // host name or ip address
    Host string
    // port to determine if it's http or https default
    // winrm ports (http:5985, https:5986).Versions
    // of winrm can be customized to listen on other ports
    Port int
    // set the flag true for https connections
    HTTPS bool
    // set the flag true for skipping ssl verifications
    Insecure bool
    // if set, used to verify the hostname on the returned certificate
    TLSServerName string
    // pointer pem certs, and key
    CACert []byte // cert auth to intdetify the server cert
    Key    []byte // public key for client auth connections
    Cert   []byte // cert for client auth connections
    // duration timeout for the underling tcp conn(http/https base protocol)
    // if the time exceeds the connection is cloded/timeouts
    Timeout time.Duration
}

Endpoint struct holds configurations for the server endpoint

func NewEndpoint Uses

func NewEndpoint(host string, port int, https bool, insecure bool, Cacert, cert, key []byte, timeout time.Duration) *Endpoint

NewEndpoint returns new pointer to struct Endpoint, with a default 60s response header timeout

type Parameters Uses

type Parameters struct {
    Timeout            string
    Locale             string
    EnvelopeSize       int
    TransportDecorator func() Transporter
    Dial               func(network, addr string) (net.Conn, error)
}

Parameters struct defines metadata information and http transport config

func NewParameters Uses

func NewParameters(timeout, locale string, envelopeSize int) *Parameters

NewParameters return new struct of type Parameters this struct makes the configuration for the request, size message, etc.

type Shell Uses

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

Shell is the local view of a WinRM Shell of a given Client

func (*Shell) Close Uses

func (s *Shell) Close() error

Close will terminate this shell. No commands can be issued once the shell is closed.

func (*Shell) Execute Uses

func (s *Shell) Execute(command string, arguments ...string) (*Command, error)

Execute command on the given Shell, returning either an error or a Command

type Transporter Uses

type Transporter interface {
    // init request baset on the transport configurations
    Post(*Client, *soap.SoapMessage) (string, error)
    Transport(*Endpoint) error
}

Transporter does different transporters and init a Post request based on them

Directories

PathSynopsis
soap

Package winrm imports 20 packages (graph) and is imported by 96 packages. Updated 2019-03-12. Refresh now. Tools for package owners.