Sample code for 30+ languages & platforms
Dart

Check Whether an SSH Channel is Open

See more SSH Examples

Demonstrates the Chilkat Ssh.ChannelIsOpen method, which reports whether a channel number identifies a channel Chilkat currently considers open for application I/O. The only argument is the channel number. This example checks the channel before and after sending CLOSE.

Background: Because one SSH connection can carry many channels with independent lifetimes, code that manages several needs a way to ask whether a given one is still usable. This returns false for invalid or nonexistent channel numbers, after a local Disconnect, once remote closure is processed, and immediately after ChannelSendClose — which marks the channel locally closed without waiting for the remote side.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // Demonstrates the Ssh.ChannelIsOpen method, which reports whether a channel number identifies
  // a channel Chilkat currently considers open for application I/O.  The only argument is the
  // channel number.

  final ssh = CkSsh();

  final sshPort = 22;
  try {
    ssh.connect('ssh.example.com', sshPort);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Normally you would not hard-code the password in source.  You should instead obtain it
  // from an interactive prompt, environment variable, or a secrets vault.
  final password = 'mySshPassword';

  try {
    ssh.authenticatePw('mySshLogin', password);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Open a session channel.  A negative return value indicates failure.
  final channelNum = ssh.openSessionChannel();
  if (channelNum < 0) {
    print(ssh.lastErrorText);
    return;
  }

  if (ssh.channelIsOpen(channelNum)) {
    print('The channel is open.');
  } else {
    print('The channel is not open.');
  }

  // Send CLOSE, which immediately marks the channel locally closed.
  try {
    ssh.channelSendClose(channelNum);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  if (ssh.channelIsOpen(channelNum)) {
    print('Still open.');
  } else {
    print('The channel is now closed.');
  }

  ssh.disconnect();
}