• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Perl's NET::FTP meldet Bad Remote Filename

byron1778

Hacker
Hallo Forum!

Ich habe bei meinem Perl Script, in welchem das NET::FTP Modul eingebunden ist, immer folgenden Fehler!


  • Bad remote filename 'nagios-files-2009-04-16-0311.tar.gz
    '
    at ./ftp_backup.pl line 54

Der Code hierzu sieht so aus

Code:
my $nagiosruntimedbforftp = `ls -latr /usr/local/nagios/var/backups/|awk '{if ((\$NF!=".")&&(\$NF!="..")){print \$NF}}'|tail -5 | head -1 | tail -1`;
my $nagiosreportsdbforftp = `ls -latr /usr/local/nagios/var/backups/|awk '{if ((\$NF!=".")&&(\$NF!="..")){print \$NF}}'|tail -5 | head -2 | tail -1`;
my $nagiosfilesforftp = `ls -latr /usr/local/nagios/var/backups/|awk '{if ((\$NF!=".")&&(\$NF!="..")){print \$NF}}'|tail -5 | head -3 | tail -1`;
my $nagiosdbdateforftp = `ls -latr /usr/local/nagios/var/backups/|awk '{if ((\$NF!=".")&&(\$NF!="..")){print \$NF}}'|tail -5 | head -4 | tail -1`;
my $nagiosdbtimerforftp = `ls -latr /usr/local/nagios/var/backups/|awk '{if ((\$NF!=".")&&(\$NF!="..")){print \$NF}}'|tail -5 | head -5 | tail -1`;
my $dir = "/usr/local/nagios/var/backups/";


my @files=ftp_connect($nagiosruntimedbforftp, $nagiosreportsdbforftp, $nagiosfilesforftp, $nagiosdbdateforftp, $nagiosdbtimerforftp);
my ($DYNAMIC, $STATIC)=open_file(@files);
compare_file($DYNAMIC, $STATIC);


sub ftp_connect {
my  ( $ftp, @files );
$ftp = Net::FTP->new("10.117.240.185", Port=>21, Debug => 0) or die "Cannot connect to FTP - Server: $@";
$ftp->login("nagiosftp",'1pwf.Nagios') or die "Cannot login ", $ftp->message;
$ftp->binary;
chdir($dir);
$ftp->put("$nagiosruntimedbforftp","$nagiosruntimedbforftp");
@files=$ftp->dir;
$ftp->quit;
return @files;
}

Ich habe schon alles moegliche versucht, wie z. B: escapen oder auch nur $nagiosruntimedbforftp.
Hat aber leider nicht funktioniert bis jetzt.

Weiss vll.jemand woran es liegen koennte?

Danke vielmals!
 

abgdf

Guru
Wenn Du das sauber in Perl ohne Systemaufrufe von "ls", "awk" usw. schreiben würdest, wäre Dein Code wahrscheinlich übersichtlicher, so daß Du dann auch sehen könntest, woran's liegt.
Statt "ls" z.B.:
Code:
my @a = <*>;

foreach (@a) {
    print "$_\n";
}

Gruß
 

}-Tux-{

Hacker
Ich kenne mich mit dem FTP Module nicht aus aber evtl. musst du den kompletten Remote/Local Path angeben?

}-Tux-{
 
Oben