Documentation ¶
Index ¶
- Variables
- func NewClientWithDial(dial func(network, addr string) (net.Conn, error)) *clientRequest
- func NewClientWithProxyFunc(proxyfunc func(req *http.Request) (*url.URL, error)) *clientRequest
- func NewDeleteShellRequest(uri, shellId string, params *Parameters) *soap.SoapMessage
- func NewExecuteCommandRequest(uri, shellId, command string, arguments []string, params *Parameters) *soap.SoapMessage
- func NewGetOutputRequest(uri, shellId, commandId, streams string, params *Parameters) *soap.SoapMessage
- func NewOpenShellRequest(uri string, params *Parameters) *soap.SoapMessage
- func NewSendInputRequest(uri, shellId, commandId string, input []byte, eof bool, params *Parameters) *soap.SoapMessage
- func NewSignalRequest(uri string, shellId string, commandId string, params *Parameters) *soap.SoapMessage
- func ParseExecuteCommandResponse(response string) (string, error)
- func ParseOpenShellResponse(response string) (string, error)
- func ParseSlurpOutputErrResponse(response string, stdout, stderr io.Writer) (bool, int, error)
- func ParseSlurpOutputResponse(response string, stream io.Writer, streamType string) (bool, int, error)
- func Powershell(psCmd string) string
- func VerifyRunSuccess(cmd *Command, stderr io.Writer)
- type Client
- func (c *Client) CreateShell() (*Shell, error)
- func (c *Client) NewShell(id string) *Shell
- func (c *Client) Run(command string, stdout io.Writer, stderr io.Writer) (int, error)
- func (c Client) RunWithInput(command string, stdout, stderr io.Writer, stdin io.Reader) (int, error)
- func (c *Client) RunWithString(command string, stdin string) (string, string, int, error)
- type ClientAuthRequest
- type ClientNTLM
- type Command
- type Endpoint
- type Parameters
- type Shell
- type Transporter
Constants ¶
This section is empty.
Variables ¶
var DefaultParameters = NewParameters("PT60S", "en-US", 153600)
DefaultParameters return constant config of type Parameters
Functions ¶
func NewClientWithDial ¶
func NewClientWithProxyFunc ¶
func NewDeleteShellRequest ¶
func NewDeleteShellRequest(uri, shellId string, params *Parameters) *soap.SoapMessage
NewDeleteShellRequest ...
func NewExecuteCommandRequest ¶
func NewExecuteCommandRequest(uri, shellId, command string, arguments []string, params *Parameters) *soap.SoapMessage
NewExecuteCommandRequest exec command on specific shellID
func NewGetOutputRequest ¶
func NewGetOutputRequest(uri, shellId, commandId, streams string, params *Parameters) *soap.SoapMessage
func NewOpenShellRequest ¶
func NewOpenShellRequest(uri string, params *Parameters) *soap.SoapMessage
NewOpenShellRequest makes a new soap request
func NewSendInputRequest ¶
func NewSendInputRequest(uri, shellId, commandId string, input []byte, eof bool, params *Parameters) *soap.SoapMessage
func NewSignalRequest ¶
func NewSignalRequest(uri string, shellId string, commandId string, params *Parameters) *soap.SoapMessage
func ParseOpenShellResponse ¶
func Powershell ¶
Powershell wraps a PowerShell script and prepares it for execution by the winrm client
func VerifyRunSuccess ¶
Types ¶
type Client ¶
type Client struct { Parameters // contains filtered or unexported fields }
Client struct
func NewClient ¶
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 ¶
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 ¶
CreateShell will create a WinRM Shell, which is the prealable for running commands.
func (*Client) Run ¶
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 ¶
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.
type ClientAuthRequest ¶
type ClientAuthRequest struct {
// contains filtered or unexported fields
}
func NewClientAuthRequestWithDial ¶
func NewClientAuthRequestWithDial(dial func(network, addr string) (net.Conn, error)) *ClientAuthRequest
func (ClientAuthRequest) Post ¶
func (c ClientAuthRequest) Post(client *Client, request *soap.SoapMessage) (string, error)
func (*ClientAuthRequest) Transport ¶
func (c *ClientAuthRequest) Transport(endpoint *Endpoint) error
type ClientNTLM ¶
type ClientNTLM struct {
// contains filtered or unexported fields
}
ClientNTLM provides a transport via NTLMv2
func NewClientNTLMWithDial ¶
func NewClientNTLMWithDial(dial func(network, addr string) (net.Conn, error)) *ClientNTLM
func (ClientNTLM) Post ¶
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 ¶
func (c *ClientNTLM) Transport(endpoint *Endpoint) error
Transport creates the wrapped NTLM transport
type Command ¶
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.
type Endpoint ¶
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
type Parameters ¶
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 ¶
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 ¶
type Shell struct {
// contains filtered or unexported fields
}
Shell is the local view of a WinRM Shell of a given Client
type Transporter ¶
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