public class ProcessShell extends AbstractLoggingBean implements InvertedShell
Modifier and Type | Field and Description |
---|---|
private ChannelSession |
channel |
private java.lang.String |
cmdValue |
private java.util.List<java.lang.String> |
command |
private TtyFilterInputStream |
err |
private TtyFilterOutputStream |
in |
private TtyFilterInputStream |
out |
private java.lang.Process |
process |
private ServerSession |
session |
log
Constructor and Description |
---|
ProcessShell(java.util.Collection<java.lang.String> command) |
ProcessShell(java.lang.String... command) |
Modifier and Type | Method and Description |
---|---|
void |
destroy(ChannelSession channel)
This method is called by the SSH server to destroy the command because the client has disconnected somehow.
|
int |
exitValue()
Retrieve the exit value of the shell.
|
ChannelSession |
getChannelSession() |
java.io.InputStream |
getErrorStream() |
java.io.OutputStream |
getInputStream()
Returns the output stream used to feed the shell.
|
java.io.InputStream |
getOutputStream() |
ServerSession |
getServerSession() |
boolean |
isAlive()
Check if the underlying shell is still alive
|
protected java.util.Map<java.lang.String,java.lang.String> |
resolveShellEnvironment(java.util.Map<java.lang.String,java.lang.String> env) |
protected java.util.Map<PtyMode,java.lang.Integer> |
resolveShellTtyOptions(java.util.Map<PtyMode,java.lang.Integer> modes) |
void |
setSession(ServerSession session) |
void |
start(ChannelSession channel,
Environment env)
Starts the command execution.
|
java.lang.String |
toString() |
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getSession
getSessionContext
private final java.util.List<java.lang.String> command
private java.lang.String cmdValue
private ServerSession session
private ChannelSession channel
private java.lang.Process process
private TtyFilterOutputStream in
private TtyFilterInputStream out
private TtyFilterInputStream err
public ProcessShell(java.lang.String... command)
command
- The command components which when joined (with space separator) create the full command to be
executed by the shellpublic ProcessShell(java.util.Collection<java.lang.String> command)
public ServerSession getServerSession()
getServerSession
in interface ServerSessionHolder
ServerSession
usedpublic void setSession(ServerSession session)
setSession
in interface SessionAware
session
- The ServerSession
in which this shell will be executed.public ChannelSession getChannelSession()
getChannelSession
in interface InvertedShell
ChannelSession
instance through which the shell was created - may be null
if shell
not started yetpublic void start(ChannelSession channel, Environment env) throws java.io.IOException
CommandLifecycle
Runnable
, and this method should spawn a new thread like:
Thread(this).start();
start
in interface CommandLifecycle
channel
- The ChannelSession
through which the command has been receivedenv
- The Environment
java.io.IOException
- If failed to startprotected java.util.Map<java.lang.String,java.lang.String> resolveShellEnvironment(java.util.Map<java.lang.String,java.lang.String> env)
protected java.util.Map<PtyMode,java.lang.Integer> resolveShellTtyOptions(java.util.Map<PtyMode,java.lang.Integer> modes)
public java.io.OutputStream getInputStream()
InvertedShell
getInputStream
in interface InvertedShell
OutputStream
used to feed the shellpublic java.io.InputStream getOutputStream()
getOutputStream
in interface InvertedShell
InputStream
representing the output stream of the shellpublic java.io.InputStream getErrorStream()
getErrorStream
in interface InvertedShell
InputStream
representing the error stream of the shellpublic boolean isAlive()
InvertedShell
isAlive
in interface InvertedShell
true
if alivepublic int exitValue()
InvertedShell
exitValue
in interface InvertedShell
public void destroy(ChannelSession channel)
CommandLifecycle
destroy
in interface CommandLifecycle
channel
- The ChannelSession
through which the command has been receivedpublic java.lang.String toString()
toString
in class java.lang.Object