Thread Net::OpenSSH > nachfolgende, abhängige Kommandos (11 answers)
Opened by Martin at 2013-09-19 18:32

jan
 2013-09-20 17:53
#170455 #170455
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
:)

Ja, die API ist schwach, aber es läuft dann recht zuverlässig.
mein kram von damals sah ungefähr so aus:

wichtig dabei: a) ->blocking(1), b) ->shell() um ne shell zu bekommen und dann lese ich erstmal leer falls noch ein banner vom server in der shell kommt o.ä.
Dann checke ich mit waitforready, dass das ganze funktioniert und dann setze ich mein "ps axuf" ab. Das \n hat bei mir nie Probleme bereitet, Linux sei dank

Edit: die längeren sleep-Times bei mir kamen daher, dass ich da auf Maschinen Kram machte, die teilweise extrem überlastet waren, daher habe ich immer ein paar Sekunden zwischen Kommando und Antwortlesen verstreichen lassen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ssh2->connect($server) or die $!;
if ($ssh2->auth_publickey(@auth)) {
        my $chan = $ssh2->channel();
        $chan->blocking(1);
        $chan->shell();
        sleep(2);
        while(<$chan>) {};
        sleep(1);
        if(!waitforready($chan)) {
                $chan->close;
                $ssh2->disconnect();
                next SERVER;
        }
        print $chan "ps axuf\n";
        sleep(5);
        my %counting = ();
        my @lines;
        while(my $line = <$chan>) {
                push @lines, $line;
        }
}
sub waitforready {
        my $chan = shift;
        print $chan 'echo "OKCOMPUTER"' . "\n";
        my $foundanswer = 0;
        my $lookedforanswer = 0;
        while($foundanswer == 0 && $lookedforanswer < 10) {
                if(my $line = <$chan>) {
                        if($line =~ m/OKCOMPUTER/) {
                                $foundanswer = 1;
                                return 1;
                        }
                }
                sleep(1);
                $lookedforanswer++;
        }
        return 0;
}

Last edited: 2013-09-20 17:55:12 +0200 (CEST)

View full thread Net::OpenSSH > nachfolgende, abhängige Kommandos