staging.inyokaproject.org

Perl und OpenSSH

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Salamander76

Anmeldungsdatum:
14. März 2014

Beiträge: 205

Hallo an euch,

habe mit Perl und Net::OpenSSH ein Problem. Also: habe mit einer GUI einen Statusmonitor programmiert. Dieser soll stündlich verschiedene Informationen zu ca. 150 Rechnern darstellen. Das Ganze ist so gelöst, dass pro Rechner ein Thread erzeugt wird, die Stati werden über SSH ermittelt. Bisher habe ich das vom Prinzip mit

1
qx(ssh -q -o "Batchmode=1" <Befehl>);

gelöst (SSH-Authentifizierung über Keys). Nun wollte ich das Ganze auf Net::OpenSSH umstricken nach dem Prinzip

1
2
$ssh = Net::OpenSSH -> new(<Rechner>);
$ssh -> capture('<Befehl>');

Soweit so gut. Im Prinzip geht das auch, nur dass sich die GUI nach und nach mit den Informationen aufbaut und nach ca. 50% der Inhalte ist plötzlich Ende. Keine weiteren Updates mehr. Nach der einen Stunde geht es wieder von vorne los mit wiederum entsprechenden "Lücken" (wobei nicht immer an derselben Stelle die Infos fehlen).

Lasse ich über das Prinzip OpenSSH über alle Rechner Jobs sequentiell ablaufen, hat OpenSSH keinerlei Probleme damit. Entweder kommt OpenSSH/Perl mit der Anzahl der parallelen Threads nicht klar (wobei es ja mit qx(ssh...) geht oder die GUI hat damit Probleme.

Hat jemand von euch Erfahrungen damit gesammelt und evtl. ähnliche Probleme gehabt?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Salamander76 schrieb:

Lasse ich über das Prinzip OpenSSH über alle Rechner Jobs sequentiell ablaufen, hat OpenSSH keinerlei Probleme damit. Entweder kommt OpenSSH/Perl mit der Anzahl der parallelen Threads nicht klar (wobei es ja mit qx(ssh...) geht oder die GUI hat damit Probleme.

Mein Perl ist schon sehr rostig und ich habe nie GUI-Programmierung mit Perl gemacht, aber es ist für GUI-Toolkits relativ üblich, dass bestimmte Dinge nur in bestimmten Threads gemacht werden dürfen. Möglicherweise gehen Deine UI-Updates aus den Threads, die die Daten holen, verloren. Ggf. must Du die Daten irgendwo queuen und dann mal als Batch einen Update der UI machen.

Antworten |