Re: Need help: perl script to FTP

From: Chris Cole (ithinkiam_at_gmail.com)
Date: 08/26/04


Date: Thu, 26 Aug 2004 10:58:06 +0100

On Thu, 26 Aug 2004 00:21:53 -0400, FLOTServer wrote:

> Here's my problem: I run a gameserver that runs the game "Medal of Honor".
> On the game server is log file which contains all of the data from the
> players for that day (kills, deaths, etc...). I have a perl script that runs
> on my webserver, which is supposed to login to the gameserver and download
> the log. The problem is that when it gets to the part where it needs to
> download the file, it aborts. The gameserver FTP requires I use port 24 and
> passive mode. Here's my script:
>
> ====start
> #!/usr/bin/perl

use warnings;
use strict;

> ##Game server IP
> $ftpserver = "66.36.252.88:24";
>
> ##Login username
> $ftpusername = "username";
>
> ##Login password
> $ftppass = "password";
>
> ##Logfile folder on Game Server (no trailing slash)
> $cwdd = "/mainta";
>
> ##Logfile name on the gameserver
> $logfile = "qconsole.log";
>
> ##Logfile name saved on the webserver
> $logname = "qconsole.log";
>
> ##Local path on webserver (no trailing slash)
> $logpath = "/public_html/mohstats/logs";
>
>
>
> ##NO NEED TO EDIT ANYTHING BELOW THIS LINE
>
> use Net::FTP;
>
> if ($ftp = Net::FTP->new("$ftpserver", Debug => 0)) { print "Logging in to
> server\n"; } else { print "could not find server! Exiting\n";
> &send("Transfer FAILED. Could NOT connect to $ftpserver", "Transfer
> FAILED"); exit; }
>
> if ($ftp->login("$ftpusername","$ftppass")) { print "Username and Password
> ACCEPTED\n"; } else { print "could not log into server with Username and
> Password. Exiting!\n"; &send("Transfer FAILED. Could NOT connect to

The &send() subroutine doesn't exist in your script. Did you copy the
script from somewhere? Also, '&' is unecessary, send("blah...") is
sufficient.

> $ftpserver with the Username And Password provided - Authentication error.",
> "Transfer FAILED"); exit; }
>
> if ($ftp->pasv) { print "Passive mode entered successfully\n"; } else {
> print "Could not switch to pasive mode.\n"; }
>
> if ($ftp->cwd("$cwdd")) { print "Changed to the directory without any
> trouble - DOWNLOADING\n"; } else { print "Could not change to the
> appropriate directory, uploading anyway\n"; }
>
> if ($ftp->ascii) { print "Changed to ASCII Mode No Problem\n"; } else {
> print "Could not change to ASCII mode $!\n"; exit; }
>
> if ($ftp->get("$logfile","$logpath/$logname")) { print "Everything appears
> ok with the Transfer\n"; } else { print "Can not Transfer file $!\n
> EXITING\n", $ftp->message, "\n"; &send("Transfer FAILED. Could NOT Transfer
> from $ftpserver. Error message returned from server is: $1", "Transfer
> FAILED"); exit; }
>
> $ftp->delete("$logfile");
> $ftp->quit;
>
> print "File Transferred OK!\nFinished\n";
> ====end
>
> Here's the error I get when the script runs:
>
> Undefined subroutine &main::send called at
> /home/flot/public_html/cgi-bin/ftp.pl line 40.

See above for problem here

> Logging in to server
> Username and Password ACCEPTED
> Passive mode entered successfully
> Changed to the directory without any trouble - DOWNLOADING

OK up to here.

> Can not Transfer file
> EXITING
> Cannot retrieve. Failed. Aborting

Have you checked whether the file you're looking for exists? Do you have
write permission to your local directory?
 
> Any idea what is going wrong?



Relevant Pages

  • Re: Need help: perl script to FTP
    ... > On the game server is log file which contains all of the data from the ... > on my webserver, which is supposed to login to the gameserver and download ... The &sendsubroutine doesn't exist in your script. ...
    (perl.beginners)
  • Re: trying to create a daemon
    ... > simple script that can login to a webserver, connect to port (whatever ...
    (perl.beginners)
  • Re: Getting status/response codes in Perl
    ... > information out to a log file. ... the said script should terminate with error, ... your webserver may allow for your application to add information ... to the webserver logfile. ...
    (comp.lang.perl.misc)
  • Re: Login Script - log files overwritten
    ... > I have a script (cmd file) is being called from the login ... > written to a log file housed on a share. ...
    (microsoft.public.win2000.networking)
  • Login Script - log files overwritten
    ... I have a script is being called from the login ... written to a log file housed on a share. ... Two users writing to the file at the same time? ...
    (microsoft.public.win2000.networking)