def invoke_shell(self):
if self.closed or self.eof_received or self.eof_sent or not self.active:<EOL><INDENT>raise SSHException('<STR_LIT>')<EOL><DEDENT>m = Message()<EOL>m.add_byte(chr(MSG_CHANNEL_REQUEST))<EOL>m.add_int(self.remote_chanid)<EOL>m.add_string('<STR_LIT>')<EOL>m.add_boolean(<NUM_LIT:1>)<EOL>self._event_pending()<EOL>self.transport._send_user_message(m)<EOL>self._wait_for_event()<EOL>
Request an interactive shell session on this channel.  If the server
allows it, the channel will then be directly connected to the stdin,
stdout, and stderr of the shell.

Normally you would call L{get_pty} before this, in which case the
shell will operate through the pty, and the channel will be connected
to the stdin and stdout of the pty.

When the shell exits, the channel will be closed and can't be reused.
You must open a new channel if you wish to open another shell.

@raise SSHException: if the request was rejected or the channel was
    closed