public class PtyCapableChannelSession extends ChannelSession implements PtyChannelConfigurationMutator
Serves as the base channel session for executing remote commands - including a full shell. Note: all the
configuration changes via the various setXXX methods must be made before the channel is actually open.
If they are invoked afterwards then they have no effect (silently ignored).
A typical code snippet would be:
try (client = SshClient.setUpDefaultClient()) {
client.start();
try (ClientSession s = client.connect(getCurrentTestName(), "localhost", port).verify(CONNECT_TIMEOUT).getSession()) {
s.addPasswordIdentity(getCurrentTestName());
s.auth().verify(AUTH_TIMEOUT);
try (ChannelExec shell = s.createExecChannel("my super duper command")) {
shell.setEnv("var1", "val1");
shell.setEnv("var2", "val2");
...etc...
shell.setPtyType(...);
shell.setPtyLines(...);
...etc...
shell.open().verify(OPEN_TIMEOUT);
shell.waitFor(ClientChannel.CLOSED, TimeUnit.SECONDS.toMillis(17L)); // can use zero for infinite wait
Integer status = shell.getExitStatus();
if (status.intValue() != 0) {
...error...
}
}
} finally {
client.stop();
}
}
AbstractChannel.GracefulChannelCloseable, AbstractChannel.GracefulStateAbstractCloseable.StateClientChannel.StreamingAttributeRepository.AttributeKey<T>| Modifier and Type | Field and Description |
|---|---|
private boolean |
agentForwarding |
private PtyChannelConfiguration |
config |
private java.util.Map<java.lang.String,java.lang.Object> |
env |
private boolean |
usePty |
DEFAULT_INPUT_STREAM_PUMP_CHUNK_SIZE, INPUT_STREAM_PUMP_CHUNK_SIZEasyncErr, asyncIn, asyncOut, err, exitSignalHolder, exitStatusHolder, in, invertedErr, invertedIn, invertedOut, opened, openFailureLang, openFailureMsg, openFailureReason, openFuture, out, streamingchannelListenerProxy, channelListeners, eofReceived, eofSent, gracefulFuture, gracefulState, initialized, RESPONSE_BUFFER_GROWTH_FACTOR, servicecloseFuture, futureLock, statelogDEFAULT_COLUMNS_COUNT, DEFAULT_HEIGHT, DEFAULT_PTY_MODES, DEFAULT_ROWS_COUNT, DEFAULT_WIDTH, DUMMY_PTY_TYPE, WINDOWS_PTY_TYPECHANNEL_EXEC, CHANNEL_SHELL, CHANNEL_SUBSYSTEMEMPTYNONECLOSE_WAIT_TIMEOUT, DEFAULT_CLOSE_WAIT_TIMEOUT| Constructor and Description |
|---|
PtyCapableChannelSession(boolean usePty,
PtyChannelConfigurationHolder configHolder,
java.util.Map<java.lang.String,?> env) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
doOpenPty() |
int |
getPtyColumns() |
int |
getPtyHeight() |
int |
getPtyLines() |
java.util.Map<PtyMode,java.lang.Integer> |
getPtyModes() |
java.lang.String |
getPtyType() |
int |
getPtyWidth() |
boolean |
isAgentForwarding() |
boolean |
isUsePty() |
protected java.lang.String |
resolvePtyType(PtyChannelConfigurationHolder configHolder) |
void |
sendWindowChange(int columns,
int lines) |
void |
sendWindowChange(int columns,
int lines,
int height,
int width) |
void |
setAgentForwarding(boolean agentForwarding) |
java.lang.Object |
setEnv(java.lang.String key,
java.lang.Object value) |
void |
setPtyColumns(int ptyColumns) |
void |
setPtyHeight(int ptyHeight) |
void |
setPtyLines(int ptyLines) |
void |
setPtyModes(java.util.Map<PtyMode,java.lang.Integer> ptyModes) |
void |
setPtyType(java.lang.String ptyType) |
void |
setPtyWidth(int ptyWidth) |
void |
setupSensibleDefaultPty() |
void |
setUsePty(boolean usePty) |
closeImmediately0, doOpen, getInnerCloseable, handleInternalRequest, handleXonXoff, pumpInputStream, securedReadaddChannelSignalRequestHandlers, doWriteData, doWriteExtendedData, getAsyncErr, getAsyncIn, getAsyncOut, getChannelState, getChannelType, getErr, getExitSignal, getExitStatus, getIn, getInvertedErr, getInvertedIn, getInvertedOut, getOut, getStreaming, handleOpenFailure, handleOpenSuccess, handleWindowAdjust, open, open, setErr, setIn, setOut, setStreaming, updateCurrentChannelState, waitForaddChannelListener, addPendingRequest, addRequestHandler, attributeKeys, clearAttributes, computeAttributeIfAbsent, configureWindow, getAttribute, getAttributesCount, getChannelListenerProxy, getChannelStreamPacketWriterResolver, getExecutorService, getId, getLocalWindow, getParentPropertyResolver, getProperties, getRecipient, getRemoteWindow, getRequestHandlers, getSession, handleChannelRequest, handleClose, handleData, handleEof, handleExtendedData, handleFailure, handleRequest, handleSuccess, handleUnknownChannelRequest, init, invokeChannelSignaller, isEofSent, isEofSignalled, isInitialized, notifyStateChanged, notifyStateChanged, preClose, removeAttribute, removeChannelListener, removePendingRequest, removeRequestHandler, resolveChannelStreamPacketWriterResolver, sendEof, sendResponse, sendWindowAdjust, setAttribute, setChannelStreamPacketWriterResolver, setRecipient, signalChannelClosed, signalChannelClosed, signalChannelInitialized, signalChannelInitialized, signalChannelOpenFailure, signalChannelOpenFailure, signalChannelOpenSuccess, signalChannelOpenSuccess, toString, validateIncomingDataSize, writePacketdoCloseGracefully, doCloseImmediatelyaddCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, removeCloseFutureListenergetSimplifiedLoggerclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcopyConfiguration, setupSensitiveDefaultPtyConfigurationgetClientSession, validateCommandExitStatusCode, waitForaddRequestHandler, addRequestHandlers, getId, getLocalWindow, getRecipient, getRemoteWindow, getRequestHandlers, handleClose, handleData, handleEof, handleExtendedData, handleFailure, handleRequest, handleSuccess, init, isEofSignalled, isInitialized, removeRequestHandler, removeRequestHandlers, resolveAttribute, resolveAttributegetSession, getSessionContextaddChannelListener, getChannelListenerProxy, removeChannelListenergetBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getParentPropertyResolver, getProperties, getString, getStringPropertyclearAttributes, computeAttributeIfAbsent, removeAttribute, setAttributeattributeKeys, getAttribute, getAttributesCount, ofAttributesMap, ofKeyValuePaircalculatePadLength, writePacketgetChannelStreamPacketWriterResolver, resolveChannelStreamPacketWriter, resolveChannelStreamPacketWriterResolver, setChannelStreamPacketWriterResolveraddCloseFutureListener, close, close, close, getMaxCloseWaitTime, isClosed, isClosing, isOpen, removeCloseFutureListenerprivate boolean agentForwarding
private boolean usePty
private final java.util.Map<java.lang.String,java.lang.Object> env
private final PtyChannelConfiguration config
public PtyCapableChannelSession(boolean usePty,
PtyChannelConfigurationHolder configHolder,
java.util.Map<java.lang.String,?> env)
protected java.lang.String resolvePtyType(PtyChannelConfigurationHolder configHolder)
public void setupSensibleDefaultPty()
public boolean isAgentForwarding()
public void setAgentForwarding(boolean agentForwarding)
public boolean isUsePty()
public void setUsePty(boolean usePty)
public java.lang.String getPtyType()
getPtyType in interface PtyChannelConfigurationHolderpublic void setPtyType(java.lang.String ptyType)
setPtyType in interface PtyChannelConfigurationMutatorpublic int getPtyColumns()
getPtyColumns in interface PtyChannelConfigurationHolderpublic void setPtyColumns(int ptyColumns)
setPtyColumns in interface PtyChannelConfigurationMutatorpublic int getPtyLines()
getPtyLines in interface PtyChannelConfigurationHolderpublic void setPtyLines(int ptyLines)
setPtyLines in interface PtyChannelConfigurationMutatorpublic int getPtyWidth()
getPtyWidth in interface PtyChannelConfigurationHolderpublic void setPtyWidth(int ptyWidth)
setPtyWidth in interface PtyChannelConfigurationMutatorpublic int getPtyHeight()
getPtyHeight in interface PtyChannelConfigurationHolderpublic void setPtyHeight(int ptyHeight)
setPtyHeight in interface PtyChannelConfigurationMutatorpublic java.util.Map<PtyMode,java.lang.Integer> getPtyModes()
getPtyModes in interface PtyChannelConfigurationHolderpublic void setPtyModes(java.util.Map<PtyMode,java.lang.Integer> ptyModes)
setPtyModes in interface PtyChannelConfigurationMutatorpublic java.lang.Object setEnv(java.lang.String key,
java.lang.Object value)
key - The (never null) key (Note: may be empty...)value - The value to set - if null then the pre-existing value for the key (if any) is
removed.null if no previous value set for the key.public void sendWindowChange(int columns,
int lines)
throws java.io.IOException
java.io.IOExceptionpublic void sendWindowChange(int columns,
int lines,
int height,
int width)
throws java.io.IOException
java.io.IOExceptionprotected void doOpenPty()
throws java.io.IOException
java.io.IOException