NAME

Net::SSH2::Channel - SSH2 channel object

SYNOPSIS

my $chan = $ssh2->channel()
  or $ssh2->die_with_error;

$chan->exec("ls -ld /usr/local/libssh2*")
  or $ssh2->die_with_error;

$chan->send_eof;

while (<$chan>) {
  print "line read: $_";
}

print "exit status: " . $chan->exit_status . "\n";

DESCRIPTION

A channel object is created by the Net::SSH2 channel method. As well as being an object, it is also a tied filehandle. The Net::SSH2 poll method can be used to check for read/write availability and other conditions.

setenv ( key, value ... )

Sets remote environment variables. Note that most implementations do not allow environment variables to be freely set. Pass in a list of keys and values with the values to set.

It returns a true value when all the given environment variables are correctly set.

blocking ( flag )

Enable or disable blocking. Note that this is currently implemented in libssh2 by setting a per-session flag; it's equivalent to Net::SSH2::blocking.

eof

Returns true if the remote server sent an EOF.

send_eof

Send an EOF to the remote.

After an EOF has been sent, no more data may be sent to the remote process stdin channel.

close

Close the channel (happens automatically on object destruction).

wait_closed

Wait for a remote close event. Must have already seen remote EOF.

exit_status

Returns the channel's program exit status.

pty ( terminal [, modes [, width [, height ]]] )

Request a terminal on a channel. If provided, width and height are the width and height in characters (defaults to 80x24); if negative their absolute values specify width and height in pixels.

pty_size ( width, height )

Request a terminal size change on a channel. width and height are the width and height in characters; if negative their absolute values specify width and height in pixels.

ext_data ( mode )

Set extended data handling mode:

normal (default)

Keep data in separate channels; stderr is read separately.

ignore

Ignore all extended data.

merge

Merge into the regular channel.

process ( request, message )

Start a process on the channel. See also shell, exec, subsystem.

Note that only one invocation of process or any of the shortcuts shell, exec or subsystem is allowed per channel. In order to run several commands, shells or/and subsystems, a new Channel instance must be used for every one.

Alternatively, it is also possible to launch a remote shell (using shell) and simulate the user interaction printing commands to its stdin stream and reading data back from its stdout and stderr. But this approach should be avoided if possible; talking to a shell is difficult and, in general, unreliable.

shell

Start a shell on the remote host (calls process("shell")).

exec ( command )

Execute the command on the remote host (calls process("exec", command)).

Note that the given command is parsed by the remote shell; it should be properly quoted, specially when passing data from untrusted sources.

subsystem ( name )

Run subsystem on the remote host (calls process("subsystem", name)).

read ( buffer, size [, ext ] )

Attempts to read size bytes into the buffer. Returns number of bytes read, undef on failure. If ext is present and set, reads from the extended data channel (stderr).

write ( buffer [, ext ] )

Attempts to write the buffer to the channel. Returns number of bytes written, undef on failure. If ext is present and set, writes to the extended data channel (stderr).

In versions of this module prior to 0.57, when working in non-blocking mode, the would-block condition was signaled by returning LIBSSH2_ERROR_EAGAIN (a negative number) while leaving the session error status unset. From version 0.59, undef is returned and the session error status is set to LIBSSH2_ERROR_EAGAIN as for any other error.

flush ( [ ext ] )

Flushes the channel; if ext is present and set, flushes extended data channel. Returns number of bytes flushed, undef on error.

exit_signal

Returns the exit signal of the command executed on the channel.

window_read

Returns the number of bytes which the remote end may send without overflowing the window limit.

In list context it also returns the number of bytes that are immediately available for read and the size of the initial window.

window_write

Returns the number of bytes which may be safely written to the channel without blocking at the SSH level. In list context it also returns the size of the initial window.

Note that this method doesn't take into account the TCP connection being used under the hood. Getting a positive integer back from this method does not guarantee that such number of bytes could be written to the channel without blocking the TCP connection.

receive_window_adjust (adjustment [, force])

Adjust the channel receive window by the given adjustment bytes.

If the amount to be adjusted is less than LIBSSH2_CHANNEL_MINADJUST and force is false the adjustment amount will be queued for a later packet.

On success returns the new size of the receive window. On failure it returns undef.

SEE ALSO

Net::SSH2.