Leser: 34
1
2
3
4
5
6
7
8
9
10
my $ssh = Net::SSH::Perl->new($server);
$ssh->login('#######','#######') ||
die "Cannot connect to Server";
my $dir = "/data/log/";
$ssh->cmd("cd $dir") ||
warn "Cannot change to directory $dir $!";
print $ssh->cmd('pwd');
($out, $err, $exit) = $ssh->cmd($cmd, [ $stdin ])
my ($out, $err, $exit) = $ssh->cmd("cd $dir")
2009-09-04T08:41:15 DonKnilch$! gibt mir leider nichts aus, warum auch immer, es erscheint lediglich meine Warnmeldung und die betroffene Zeile.
Manuell kann ich alles auf dem Server ausführen.
while (<HANDLE>) { push(@files, $_); }
my ( $var ) = $ssh->cmd('cd /dir') or die "";
1
2
3
4
5
6
7
8
9
10
$ perl -le '
sub foo {
return qw( a b c );
}
my $var = foo();
print "Resultat: $var";
'
Resultat: c
$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; use Net::SSH::Perl; my $ssh = Net::SSH::Perl->new( 'localhost' ) or die "ssh->new: $!"; $ssh->login(); # Achtung! zwei Kommandos in einem Aufruf! my ( $out, $err, $exit ) = $ssh->cmd( 'cd /var/tmp; pwd' ); printf "Exitcode: %d\nOutput: %s\nError: %s\n--\n", $exit, $out || '', $err || ''; ( $out, $err, $exit ) = $ssh->cmd( 'pwd' ); printf "Exitcode: %d\nOutput: %s\nError: %s\n--\n", $exit, $out || '', $err || '';
1
2
3
4
5
6
7
8
9
10
11
$ perl5.10.0 /tmp/ssh.pl
Exitcode: 0
Output: /var/tmp
Error:
--
Exitcode: 0
Output: /home/username
Error:
--
open( HANDLE, $filename_whatever ) || die "$!";
open HANDLE, $filename_whatever or "$!";
2009-09-04T18:59:32 Linuxer2. In der Perldoc des Moduls ist nachzulesen, was bei cmd() so alles zu beachten ist. Z.B. dass u.U. zwei separate cmd()-Aufrufe in zwei separate Sessions ausgeführt werden und damit nichts miteinander zu tun haben!