Пример #1
0
    def allocatePty(self):
        fd = 0
        term = os.environ['TERM']
        winsz = fcntl.ioctl(fd, tty.TIOCGWINSZ, '12345678')
        winSize = struct.unpack('4H', winsz)

        ptyReqData = session.packRequest_pty_req(term, winSize, '')
        self.conn.sendRequest(self, 'pty-req', ptyReqData)
        signal.signal(signal.SIGWINCH, self._windowResized)
Пример #2
0
 def channelOpen(self, ignored):
     """
     Create a pty by sending a pty-req to the server
     """
     term = 'xterm'
     winSize = (25, 80, 0, 0)
     ptyReqData = session.packRequest_pty_req(term, winSize, '')
     self.conn.sendRequest(self, 'pty-req', ptyReqData)
     command = self.conn.sendRequest(self,
                                     'exec',
                                     NS(self._command),
                                     wantReply=True)
     command.addCallbacks(self._execSuccess, self._execFailure)
Пример #3
0
    def channelOpen(self, data):
        self.conn.set_channel(self)

        data = session.packRequest_pty_req(
            'xterm-color',
            (self.conn.terminal_size[1], self.conn.terminal_size[0], 0, 0), '')
        deferred = self.conn.sendRequest(self, 'pty-req', data, wantReply=1)

        @deferred
        def on_success(ignored):
            if self.conn.command:
                self.conn.sendRequest(self,
                                      'exec',
                                      common.NS(str(self.conn.command)),
                                      wantReply=1)
            else:
                self.conn.sendRequest(self, 'shell', '', wantReply=1)
Пример #4
0
    def channelOpen(self, _):
        def ptyReqFailed(reason):
            # TODO(vladum): Why is this never called? Looks like the Transport
            # received the error (at least the packet integrity ones).
            err("SSH PTY Request failed")
            self.reason = reason
            self.conn.sendClose(self)

        modes = pack("<B", 0x00) # only TTY_OP_END
        win_size = (0, 0, 0, 0)  # 0s are ignored
        pty_req_data = packRequest_pty_req('vt100', win_size, modes)
        d = self.conn.sendRequest(self, 'pty-req', pty_req_data, wantReply=True)
        #Set all the env variables we've got
        for key, value in self.env:
            d.addCallback(
                lambda _: self.conn.sendRequest(self, 'env', NS(key), NS(value), wantReply=True)
            )
        d.addCallback(
            # send command after we get the pty
            lambda _: self.conn.sendRequest(self, 'exec', NS(self.command))
        )
        d.addErrback(ptyReqFailed)