ssh: added RequestSubsystem().
RequestSubsystem requests the association of a subsystem with the ssh session on the remote host. A subsystem is a predefined command that runs in the background when the ssh session is initiated (i.e. sftp). R=golang-dev, agl CC=golang-dev, gustav.paul https://golang.org/cl/6295096
This commit is contained in:
committed by
Adam Langley
parent
929dedf39d
commit
cde552e05f
@@ -85,6 +85,14 @@ type setenvRequest struct {
|
||||
Value string
|
||||
}
|
||||
|
||||
// RFC 4254 Section 6.5.
|
||||
type subsystemRequestMsg struct {
|
||||
PeersId uint32
|
||||
Request string
|
||||
WantReply bool
|
||||
Subsystem string
|
||||
}
|
||||
|
||||
// Setenv sets an environment variable that will be applied to any
|
||||
// command executed by Shell or Run.
|
||||
func (s *Session) Setenv(name, value string) error {
|
||||
@@ -136,6 +144,21 @@ func (s *Session) RequestPty(term string, h, w int) error {
|
||||
return s.waitForResponse()
|
||||
}
|
||||
|
||||
// RequestSubsystem requests the association of a subsystem with the session on the remote host.
|
||||
// A subsystem is a predefined command that runs in the background when the ssh session is initiated
|
||||
func (s *Session) RequestSubsystem(subsystem string) error {
|
||||
req := subsystemRequestMsg{
|
||||
PeersId: s.remoteId,
|
||||
Request: "subsystem",
|
||||
WantReply: true,
|
||||
Subsystem: subsystem,
|
||||
}
|
||||
if err := s.writePacket(marshal(msgChannelRequest, req)); err != nil {
|
||||
return err
|
||||
}
|
||||
return s.waitForResponse()
|
||||
}
|
||||
|
||||
// RFC 4254 Section 6.9.
|
||||
type signalMsg struct {
|
||||
PeersId uint32
|
||||
|
||||
Reference in New Issue
Block a user