Class PtyCapableChannelSession
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.closeable.IoBaseCloseable
org.apache.sshd.common.util.closeable.AbstractCloseable
org.apache.sshd.common.util.closeable.AbstractInnerCloseable
org.apache.sshd.common.channel.AbstractChannel
org.apache.sshd.client.channel.AbstractClientChannel
org.apache.sshd.client.channel.AsyncCapableClientChannel
org.apache.sshd.client.channel.ChannelSession
org.apache.sshd.client.channel.PtyCapableChannelSession
- All Implemented Interfaces:
Closeable, AutoCloseable, Channel, ClientChannel, ClientSessionHolder, AttributeRepository, AttributeStore, Channel, ChannelIdentifier, ChannelListenerManager, PtyChannelConfigurationHolder, PtyChannelConfigurationMutator, StreamingChannel, ChannelStreamWriterResolver, ChannelStreamWriterResolverManager, Closeable, PropertyResolver, SessionContextHolder, SessionHolder<Session>, ExecutorServiceCarrier
- Direct Known Subclasses:
ChannelExec, ChannelShell
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();
}
}
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractChannel
AbstractChannel.GracefulChannelCloseable, AbstractChannel.GracefulState, AbstractChannel.PacketValidatorNested classes/interfaces inherited from class AbstractCloseable
AbstractCloseable.StateNested classes/interfaces inherited from interface AttributeRepository
AttributeRepository.AttributeKey<T>Nested classes/interfaces inherited from interface StreamingChannel
StreamingChannel.Streaming -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate final PtyChannelConfigurationprivate booleanFields inherited from class ChannelSession
pumper, pumperServiceFields inherited from class AsyncCapableClientChannel
withErrorStreamFields inherited from class AbstractClientChannel
asyncErr, asyncIn, asyncOut, err, exitSignalHolder, exitStatusHolder, in, invertedErr, invertedIn, invertedOut, opened, openFailureLang, openFailureMsg, openFailureReason, openFuture, out, redirectErrorStream, streamingFields inherited from class AbstractChannel
channelListenerProxy, channelListeners, closeSignaled, DEFAULT_PACKET_VALIDATOR, eofReceived, eofSent, gracefulFuture, gracefulState, initialized, RESPONSE_BUFFER_GROWTH_FACTOR, service, unregisterSignaledFields inherited from class AbstractCloseable
closeFuture, futureLock, stateFields inherited from class AbstractLoggingBean
logFields inherited from interface Channel
CHANNEL_EXEC, CHANNEL_SHELL, CHANNEL_SUBSYSTEMFields inherited from interface ChannelStreamWriterResolver
NONEFields inherited from interface PropertyResolver
EMPTYFields inherited from interface PtyChannelConfigurationHolder
DEFAULT_COLUMNS_COUNT, DEFAULT_HEIGHT, DEFAULT_PTY_MODES, DEFAULT_ROWS_COUNT, DEFAULT_WIDTH, DUMMY_PTY_TYPE, WINDOWS_PTY_TYPE -
Constructor Summary
ConstructorsConstructorDescriptionPtyCapableChannelSession(boolean usePty, PtyChannelConfigurationHolder configHolder, Map<String, ?> env) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidintintintintbooleanbooleanisUsePty()protected StringresolvePtyType(PtyChannelConfigurationHolder configHolder) voidsendWindowChange(int columns, int lines) voidsendWindowChange(int columns, int lines, int height, int width) voidsetAgentForwarding(boolean agentForwarding) voidsetPtyColumns(int ptyColumns) voidsetPtyHeight(int ptyHeight) voidsetPtyLines(int ptyLines) voidsetPtyModes(Map<PtyMode, Integer> ptyModes) voidsetPtyType(String ptyType) voidsetPtyWidth(int ptyWidth) voidvoidsetUsePty(boolean usePty) Methods inherited from class ChannelSession
handleInternalRequest, handleXonXoff, sendEnvVariables, setEnvMethods inherited from class AsyncCapableClientChannel
closeImmediately0, doOpen, doWriteExtendedData, getAsyncErr, getErr, getInnerCloseable, getInvertedErr, pumpInputStream, securedRead, setErrMethods inherited from class AbstractClientChannel
addChannelSignalRequestHandlers, doWriteData, getAsyncIn, getAsyncOut, getChannelState, getChannelType, getExitSignal, getExitStatus, getIn, getInvertedIn, getInvertedOut, getOut, getStreaming, handleOpenFailure, handleOpenSuccess, handleWindowAdjust, isRedirectErrorStream, mayWrite, open, open, setIn, setOut, setRedirectErrorStream, setStreaming, updateCurrentChannelState, waitForMethods inherited from class AbstractChannel
addChannelListener, addPendingRequest, addRequestHandler, attributeKeys, clearAttributes, computeAttributeIfAbsent, configureWindow, getAttribute, getAttributesCount, getChannelId, getChannelListenerProxy, getChannelStreamWriterResolver, getExecutorService, getLocalWindow, getPacketValidator, getParentPropertyResolver, getProperties, getRecipient, getRemoteWindow, getRequestHandlers, getSession, handleChannelRegistrationResult, handleChannelRequest, handleChannelUnregistration, handleClose, handleData, handleEof, handleExtendedData, handleFailure, handleRequest, handleSuccess, handleUnknownChannelRequest, init, invokeChannelSignaller, isEofSent, isEofSignalled, isInitialized, notifyStateChanged, notifyStateChanged, preClose, removeAttribute, removeChannelListener, removePendingRequest, removeRequestHandler, resolveChannelStreamWriterResolver, sendEof, sendResponse, sendWindowAdjust, setAttribute, setChannelStreamWriterResolver, setPacketValidator, setRecipient, signalChannelClosed, signalChannelClosed, signalChannelInitialized, signalChannelInitialized, signalChannelOpenFailure, signalChannelOpenFailure, signalChannelOpenSuccess, signalChannelOpenSuccess, toString, validateIncomingDataSize, writePacketMethods inherited from class AbstractInnerCloseable
doCloseGracefully, doCloseImmediatelyMethods inherited from class AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, removeCloseFutureListenerMethods inherited from class AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warnMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface AttributeRepository
attributeKeys, getAttribute, getAttributesCountMethods inherited from interface AttributeStore
clearAttributes, computeAttributeIfAbsent, removeAttribute, setAttributeMethods inherited from interface Channel
addRequestHandler, addRequestHandlers, getLocalWindow, getRecipient, getRemoteWindow, getRequestHandlers, handleChannelRegistrationResult, handleChannelUnregistration, handleClose, handleData, handleEof, handleExtendedData, handleFailure, handleRequest, handleSuccess, init, isEofSignalled, isInitialized, removeRequestHandler, removeRequestHandlers, resolveAttribute, writePacketMethods inherited from interface ChannelIdentifier
getChannelIdMethods inherited from interface ChannelListenerManager
addChannelListener, getChannelListenerProxy, removeChannelListenerMethods inherited from interface ChannelStreamWriterResolverManager
getChannelStreamWriterResolver, resolveChannelStreamWriter, resolveChannelStreamWriterResolver, setChannelStreamWriterResolverMethods inherited from interface ClientChannel
getClientSession, waitForMethods inherited from interface Closeable
addCloseFutureListener, close, close, isClosed, isClosing, isOpen, removeCloseFutureListenerMethods inherited from interface PropertyResolver
getBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getParentPropertyResolver, getProperties, getString, getStringProperty, isEmptyMethods inherited from interface SessionHolder
getSession, getSessionContext
-
Field Details
-
agentForwarding
private boolean agentForwarding -
usePty
private boolean usePty -
config
-
-
Constructor Details
-
PtyCapableChannelSession
public PtyCapableChannelSession(boolean usePty, PtyChannelConfigurationHolder configHolder, Map<String, ?> env)
-
-
Method Details
-
resolvePtyType
-
setupSensibleDefaultPty
public void setupSensibleDefaultPty() -
isAgentForwarding
public boolean isAgentForwarding() -
setAgentForwarding
public void setAgentForwarding(boolean agentForwarding) -
isUsePty
public boolean isUsePty() -
setUsePty
public void setUsePty(boolean usePty) -
getPtyType
- Specified by:
getPtyTypein interfacePtyChannelConfigurationHolder
-
setPtyType
- Specified by:
setPtyTypein interfacePtyChannelConfigurationMutator
-
getPtyColumns
public int getPtyColumns()- Specified by:
getPtyColumnsin interfacePtyChannelConfigurationHolder
-
setPtyColumns
public void setPtyColumns(int ptyColumns) - Specified by:
setPtyColumnsin interfacePtyChannelConfigurationMutator
-
getPtyLines
public int getPtyLines()- Specified by:
getPtyLinesin interfacePtyChannelConfigurationHolder
-
setPtyLines
public void setPtyLines(int ptyLines) - Specified by:
setPtyLinesin interfacePtyChannelConfigurationMutator
-
getPtyWidth
public int getPtyWidth()- Specified by:
getPtyWidthin interfacePtyChannelConfigurationHolder
-
setPtyWidth
public void setPtyWidth(int ptyWidth) - Specified by:
setPtyWidthin interfacePtyChannelConfigurationMutator
-
getPtyHeight
public int getPtyHeight()- Specified by:
getPtyHeightin interfacePtyChannelConfigurationHolder
-
setPtyHeight
public void setPtyHeight(int ptyHeight) - Specified by:
setPtyHeightin interfacePtyChannelConfigurationMutator
-
getPtyModes
- Specified by:
getPtyModesin interfacePtyChannelConfigurationHolder
-
setPtyModes
- Specified by:
setPtyModesin interfacePtyChannelConfigurationMutator
-
sendWindowChange
- Throws:
IOException
-
sendWindowChange
- Throws:
IOException
-
doOpenPty
- Throws:
IOException
-