Thread Net::SFTP über ein Net::Proxy (9 answers)
Opened by jetcki at 2010-09-21 12:30

jetcki
 2010-09-21 12:30
#141457 #141457
User since
2010-07-09
6 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen,

ich habe folgendes Szenario:
-> es müssen mehrere Dateien über ein Proxy via sftp übertragen werden. Da dabei auch einige anderen Sachen gemacht werden müssen, muss perl eingesetzt werden. Auch ein Shell-Skript muss ich hier leider verzichten.

Problem:
Sobald ich den Proxy im Perl-Skript starte (Zeile 9: $proxy->mainloop) bleibt das Skript an dieser Zeile stehen, und es wird keine Verbindung zu dem SFTP-Server hergestellt, da diese erst in darauf folgenden Zeilen gemacht wird.

Während dessen kann ich über eine andere Konsole auf den so geöffneten Proxy-Port zugreifen und die Dateien auf den Zielrechner kopieren.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
my $proxy = Net::Proxy->new (
in => { type => 'tcp', port => '6789' },
out => {
type => 'tcp', host => 'XXX.XXX.XXX.XXX', port => '22',
proxy_host => 'YYY.YYY.YYY.YYY', proxy_port => '8080',
},
};
$proxy->register();
$proxy_>meinloop();

# hier bleibt das Skript stehen

my $sftp = Net::SFTP::Forgeign->new($host, %login_param);
if($sftp->error) {
die "keine verbindung\n";
}
if (!defined($sftp)) {
die "Probleme beim verbinden\n";
} else {
print "alles ok, Verbindung hergestellt\n" if(defined($verbose));
}


Da ich mit Perl (noch) keine Erfahrung habe, fehlt mir auch eine Idee...

Vielleicht klappt es mit einem Fork, aber ich habe hier keine Ahnung, wie ich den Prozess starten, Daten übertragen und beenden soll...

Vielleicht so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
if(defined($kindpid = fork())) {
die "kann fork nich ausführen\n";
} elsif ($kindpid == 9) {
# starte den Kindprozeß
$proxy->mainloop();
} else {
# hier kann ich kopieren
my $sftp = Net::SFTP::Forgeign->new($host, %login_param);
[...]
}


nun die Frage:
-> was mach ich hier falsch?
-> wie beende ich den Kindprozeß nach dem die Dateien kopiert wurden?
-> Gibt es andere Methode, wo z.B. dem SFTP-Modul mitgeteilt wird, dass es selbst einen Proxy benutzen soll?

Ich hoffe, dass Jemand mir helfen kann

Danke Jetcki
Last edited: 2010-09-21 13:17:31 +0200 (CEST)

View full thread Net::SFTP über ein Net::Proxy