PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Net::FTP



Vagabundo
24.05.09, 17:00
Hallo,

ich arbeite mit mehreren Centos-Linux Servern.

Auf einem der Server habe ich ein Programm laufen, dass per Net::FTP Dateien auf einen der anderen Server uebertraegt.

Bisher musst ich nur auf einen anderen Server Dateien uebertragen und es hat alles einwandfrei funktioniert.

Jetzt musste ich den Empfangsserver aendern. Seitdem bekomme ich von meinem Programm bei dem Befehl:

$ftpfax->put($dir.$fsw,$newfsdatei);

immer die Meldung:

Can't use an undefined value as a symbol reference at /usr/lib/perl5/5.8.0/Net/FTP/dataconn.pm line 53

Auf die dataconn.pm habe ich ja nun keinen Einfluss und da im Programm nur der Name des Empfangsservers geaendert wurde, kann ich mir ueberhaupt keinen Reim daraus machen.

Die ftp-Connection besteht, denn davor erzeuge ich ein neues Directory ($ftpfax->mkdir) und wechsele in das neue Direktory ($ftpfax->cwd), was auch funktioniert (geprueft mit $ftpfax->pwd).
Die drei verwendeten Variablen ($dir $fsw $newfsdatei) habe ich mir auch direkt vor dem Befehl anzeigen lassen und die Werte sind ok.

Kann mir jemand einen Tip geben wie ich da weitersuchen kann?

Herzliche Gruesse
Christian

marce
24.05.09, 20:28
ich behaupte mal frech, daß man hier ohne konkreten Code nicht viel sagen kann...

Vagabundo
24.05.09, 22:39
Hallo Marce,

danke, aber so lange ich programmiere (und das sind inzwischen viele Jahre) konnte mir noch NIEMALS in irgendeinem Forum jemand weiterhelfen, wenn ich nach so einer Rueckfrage dann mehr Code zur Verfuegung gestellt habe.

Das Prograemmchen umfasst 1500 Zeilen und ich denke ich habe die wichtigsten Infos geliefert.

Aber andersherum gefragt: Wonach wuerdest Du denn im kompletten Code schauen? Vielleicht hilft mir das schon weiter. Und das sollte ja auch eigentlich meine Frage sein, weil ich nicht weiss wo ich suchen soll.

Hier nochmal die Fakten:

1. Beim Uebertrag auf einen anderen Server (auch Linux Centos) hat das Script ueber Jahre funktioniert. Die empfangenden Server sind ziemlich identisch konfiguriert.

2. Obwohl nur der Servername im Script geaendert wurde, geht es jetzt nicht mehr und es bringt eine Fehlermeldung von einem Modul von Net:FTP. s.o. Um das Modul zu untersuchen, bin ich sicherlich nicht gut genug.

3. Vor dem put, wird ein neues Verzeichnis auf dem remoten Server angelegt und in das neue Verzeichnis gewechselt, was auch einwandfrei funktionert. Es besteht also eine Verbindung und dann kommt das PUT und bringt diese Fehlermeldung. Die im put verwendeten Variablen habe ich mir direkt vor dem PUT nochmals anzeigen lassen.

Herzliche Gruesse
Christian

marce
25.05.09, 07:05
Gut, wenn Du eh meinst, das man Dir nicht helfen kann - wieso postest Du dann hier?

Ok, ich übertreibe etwas.

Aber: Aus einer einzelnen Code-Zeile kann man keine Fehlernanalyse betreiben. Und wenn Du angeblich nur eine Variable (und da nur deren Wert) geändert hast - liegt's entweder am Wert oder an einem kleinen Missgeschick drumrum. Daher wäre es durchaus sinnvoll, hier noch die Variablendefinition zu posten, evtl. die paar Zeilen Code vor und nach der Fehlerzeile, die Debugausgaben, die Du eingebaut hast, evtl. auch mal ein print um den Befehl drumrum machen, ...

Stormbringer
25.05.09, 08:52
Ersetze, testhalber, die Variablen doch einmal mit festen Werten ...
Ansonsten halt, bei der Fülle an Infos (;)), quasi bei Null anfangen, und prüfen, ob netzwerktechnisch alles auf dem Weg zum anderen Sstem i. O. ist (Namensauflösung, Routing, Firewall, etc.).

btw: wäre der Programmierbereich nicht passender für diese Frage?

Bis denn

BedriddenTech
25.05.09, 11:09
Starte das Skript doch mal im Debugger, setz einen Breakpoint auf die "put"-Zeile und laß Dir dann alle beteiligten Variablen ausgeben. Ich glaube kaum, daß es am Modul liegt.

Vagabundo
25.05.09, 19:47
Danke fuer Eure Tips und Hinweise!

Mit dem Debugger habe ich bisher noch nicht gearbeitet. Ist aber vielleicht eine gute Idee sich damit endlich mal zu befassen.

Stormbringer Du hast Recht, vielleicht ist das Problem bei der Programmierung besser angebracht.

Ich dachte auch, ich haette klar zum Ausdruck gebracht, dass ich die Variablen (mit print) vor und nach jeder der genannten Anweisungen abgefragt habe und deshalb sicher sein kann, dass sie korrekt sind. Und vor allem, was die Verbindung zum Server betrifft: Wenn die nicht OK waere, dann haette das script ja auch kein Verzeichnis anlegen koennen und auch nicht hinein wechseln koennen.

Aber ich werde jetzt mal nur die FTP Verbindnung aus dem Script extrahieren und ausprobieren. Vielleicht bringt mir das ja was.

Herzliche Gruesse
Christian

BedriddenTech
25.05.09, 23:37
Ich meinte eigentlich, daß $ftpfax "undef" sein könnte. Aber ohne Code kann man eben nur raten, dann kommen die Standard-Tips und das wars. Ich kann verstehen, daß Du entsprechende Erfahrungen gemacht hast, aber mit der Informationslage ists wirklich einfach nur Raten.

Könntest auch mal ins Log auf dem Server gucken, vielleicht schließt der Server ja die Verbindung vorzeitig. Hast Du die Rückgabewerte (plus $! / $@) immer brav abgefragt?

Ansonsten... tja, viel Spaß beim Suchen.