Net-SSH2
view release on metacpan or search on metacpan
Safefree(ch);
SV *
net_ch_session(SSH2_CHANNEL* ch)
CODE:
RETVAL = newRV_inc(ch->sv_ss);
OUTPUT:
RETVAL
SSH2_NERROR
net_ch__setenv(SSH2_CHANNEL* ch, SV *key, SV *value)
PREINIT:
int i, success = 0;
const char* pv_key, * pv_value;
STRLEN len_key, len_value;
CODE:
pv_key = SvPVbyte(key, len_key);
pv_value = SvPVbyte(value, len_value);
RETVAL = libssh2_channel_setenv_ex(ch->channel,
(char*)pv_key, len_key,
(char*)pv_value, len_value);
save_eagain(ch->ss->session, RETVAL);
OUTPUT:
RETVAL
#if LIBSSH2_VERSION_NUM >= 0x010208
void
net_ch__exit_signal(SSH2_CHANNEL* ch)
lib/Net/SSH2/Channel.pm view on Meta::CPAN
}
sub error {
shift->session->error(@_)
}
sub blocking {
shift->session->blocking(@_)
}
sub setenv {
my ($self, %env) = @_;
my $rc = 1;
while (my ($k, $v) = each %env) {
$self->_setenv($k, $v)
or undef $rc;
}
$rc
}
sub read1 {
my $self = shift;
my $buffer;
my $rc = $self->read($buffer, @_);
return (defined $rc ? $buffer : undef);
lib/Net/SSH2/Channel.pm view on Meta::CPAN
print "line read: $_";
}
print "exit status: " . $chan->exit_status . "\n";
=head1 DESCRIPTION
A channel object is created by the L<Net::SSH2> C<channel> method. As well
as being an object, it is also a tied filehandle.
=head2 setenv ( key, value ... )
Sets remote environment variables. Note that most servers 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 if all the given environment variables were
correctly set.
=head2 blocking ( flag )
magic_regdata_cnt|||
magic_regdatum_get|||
magic_regdatum_set|||
magic_scalarpack|||
magic_set_all_env|||
magic_setamagic|||
magic_setarylen|||
magic_setcollxfrm|||
magic_setdbline|||
magic_setdefelem|||
magic_setenv|||
magic_sethint|||
magic_setisa|||
magic_setmglob|||
magic_setnkeys|||
magic_setpack|||
magic_setpos|||
magic_setregexp|||
magic_setsig|||
magic_setsubstr|||
magic_settaint|||
my_letohl|||n
my_letohs|||n
my_lstat_flags|||
my_lstat||5.014000|
my_memcmp||5.004000|n
my_memset|||n
my_ntohl|||
my_pclose||5.004000|
my_popen_list||5.007001|
my_popen||5.004000|
my_setenv|||
my_snprintf|5.009004||pvn
my_socketpair||5.007003|n
my_sprintf|5.009003||pvn
my_stat_flags|||
my_stat||5.014000|
my_strftime||5.007002|
my_strlcat|5.009004||pn
my_strlcpy|5.009004||pn
my_swabn|||n
my_swap|||
t/Net-SSH2.t view on Meta::CPAN
ok(!defined eval { $ssh2->channel("direct-tcpip") }, "only session channels");
my $chan = $ssh2->channel();
isa_ok($chan, 'Net::SSH2::Channel');
$chan->blocking(0); pass('set blocking');
ok(!$chan->eof(), 'not at EOF');
ok($chan->ext_data('normal'), 'normal extended data handling');
ok($chan->ext_data('merge'), 'merge extended data');
# (3) environment
is($chan->setenv(), 1, 'empty setenv');
my %env = (test1 => 'A', test2 => 'something', test3 => 'E L S E', LANG => 'C');
# most sshds disallow set, so we're happy if these don't crash
ok($chan->setenv(%env) || 1, 'set environment variables, it is ok if it fails');
is($chan->session, $ssh2, 'verify session');
# (1) callback
ok($ssh2->callback(disconnect => sub { warn "SSH_MSG_DISCONNECT!\n"; }),
'set disconnect callback');
# (2) SFTP
$ssh2->blocking(1); # creating channel may block
my $sftp = $ssh2->sftp();
isa_ok($sftp, 'Net::SSH2::SFTP');
( run in 1.326 second using v1.01-cache-2.11-cpan-6aa56a78535 )