Loading ...
Sorry, an error occurred while loading the content.

Net::FTP does not seem to work properly in Cygwin/Windows 7

Expand Messages
  • phrankpsinatra
    I am new to the group, and I have a problem in getting Perl s Net::FTP module to work properly under a copy of Cygwin I have installed in Windows 7 (64-bit). I
    Message 1 of 7 , Nov 28, 2010
    • 0 Attachment
      I am new to the group, and I have a problem in getting Perl's Net::FTP module to work properly under a copy of Cygwin I have installed in Windows 7 (64-bit).

      I am using Net::FTP as a speedy way of uploading jpegs and other binaries from my desktop to my website. Some jpegs go through OK, but there are several files which are deformed in some way. Audio and video files often fail if played after being uploaded with this script.

      Below is my script. It's quite simple:

      #! /usr/bin/perl -w
      #
      # script to FTP images to vex.net and move such files to the "uploaded"
      # directory.

      use Net::FTP;
      use File::Copy;

      my $filename = $ARGV[0];
      my $wd = "public_html/000HTML_sj/wp-content/uploads/";

      $ftp = Net::FTP->new("ftp.vex.net", Debug => 0)
      or die "Cannot connect to ftp.vex.net: $@";

      print "Logging in ...\n";
      $ftp->login("USER",'PASS') or die "Cannot login ", $ftp->message;

      $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;

      print "Uploading $filename to $wd ...\n";
      $ftp->put($filename) or die "put failed ", $ftp->message;
      system ("mv", $filename, "uploaded");

      $ftp->quit;
    • merlyn@stonehenge.com
      ... phrankpsinatra system ( mv , $filename, uploaded ); Why are you doing this *on windows*, when you have rename() available? -- Randal L. Schwartz -
      Message 2 of 7 , Nov 28, 2010
      • 0 Attachment
        >>>>> "phrankpsinatra" == phrankpsinatra <phrankpsinatra@...> writes:

        phrankpsinatra> system ("mv", $filename, "uploaded");

        Why are you doing this *on windows*, when you have rename() available?

        --
        Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
        <merlyn@...> <URL:http://www.stonehenge.com/merlyn/>
        Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
        See http://methodsandmessages.posterous.com/ for Smalltalk discussion
      • Jenda Krynicky
        From: phrankpsinatra ... $ftp- binary(); ... Jenda ===== Jenda@Krynicky.cz === http://Jenda.Krynicky.cz ===== When it comes to
        Message 3 of 7 , Nov 28, 2010
        • 0 Attachment
          From: "phrankpsinatra" <phrankpsinatra@...>
          > I am new to the group, and I have a problem in getting Perl's Net::FTP
          > module to work properly under a copy of Cygwin I have installed in
          > Windows 7 (64-bit).
          >
          > I am using Net::FTP as a speedy way of uploading jpegs and other
          > binaries from my desktop to my website. Some jpegs go through OK, but
          > there are several files which are deformed in some way. Audio and
          > video files often fail if played after being uploaded with this
          > script.
          >
          > Below is my script. It's quite simple:
          >
          > #! /usr/bin/perl -w
          > #
          > # script to FTP images to vex.net and move such files to the "uploaded"
          > # directory.
          >
          > use Net::FTP;
          > use File::Copy;
          >
          > my $filename = $ARGV[0];
          > my $wd = "public_html/000HTML_sj/wp-content/uploads/";
          >
          > $ftp = Net::FTP->new("ftp.vex.net", Debug => 0)
          > or die "Cannot connect to ftp.vex.net: $@";
          >
          > print "Logging in ...\n";
          > $ftp->login("USER",'PASS') or die "Cannot login ", $ftp->message;

          $ftp->binary();

          > $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;
          >
          > print "Uploading $filename to $wd ...\n";
          > $ftp->put($filename) or die "put failed ", $ftp->message;
          > system ("mv", $filename, "uploaded");
          >
          > $ftp->quit;

          Jenda
          ===== Jenda@... === http://Jenda.Krynicky.cz =====
          When it comes to wine, women and song, wizards are allowed
          to get drunk and croon as much as they like.
          -- Terry Pratchett in Sourcery
        • Tim Lewis
          I cannot answer the question as to why Cygwin is causing an issue. I use both Windows FTP and Filezilla. However, I do have code in my ftp scripts to check
          Message 4 of 7 , Nov 29, 2010
          • 0 Attachment
            I cannot answer the question as to why Cygwin is causing an issue. I use both Windows FTP and Filezilla. However, I do have code in my ftp scripts to check the filesize, and then email me if it does not match. I have included an example below based on your original code.
            Tim

            #!/usr/local/bin/perl

            #! /usr/bin/perl -w
            #
            # script to FTP images to vex.net and move such files to the "uploaded"
            # directory.

            use Net::FTP;
            use File::Copy;


            my $filename = $ARGV[0];
            my $wd = "public_html/000HTML_sj/wp-content/uploads/";
            my $ftpSite='ftp.vex.net';
            my $ftpUser='username';
            my $ftpPassword='password';

            $ftp = Net::FTP->new($ftpSite, Debug => 0)
            or die "Cannot connect to $ftpSite: $@";

            print "Logging in ...\n";
            $ftp->login($ftpUser,$ftpPassword) or die "Cannot login ", $ftp->message;

            $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;

            print "Uploading $filename to $wd ...\n";
            $ftp->put($filename) or die "put failed ", $ftp->message;

            my @ftpList=$ftp->ls;
            print "Checking the existence of the file after the FTP process.\n";
            my $ftpFileCount = @ftpList;
            my $fileSize = -s $completeFile;
            my $ftpFileFound="false";
            my $ftpFileSizeMatch="false";
            my $lastSlash = (rindex($completeFile,"\\") + 1);
            my $fileName = substr($completeFile,$lastSlash);
            print "Checking file $fileName\n";
            for (my $count=0;$count<$ftpFileCount;$count++) {
            my $ftpFile = @ftpList[$count];
            if (uc($filename) eq uc($ftpFile)) {
            $ftpFileFound = "true";
            my $dosFileSize = -s $filename;
            my $ftpFileSize = $ftp->size($ftpFile);
            print "Byte size on local: $dosFileSize Byte size on remote: $ftpFileSize\n";
            if ($ftpFileSize eq $dosFileSize) {
            $ftpFileSizeMatch="true";
            } # end of if
            } # end of if
            } # end of for
            if ($ftpFileFound eq "true") {
            print "File was found on remote.\n";
            if ($ftpFileSizeMatch eq "true") {
            print "File size on remote matches file size on local.\n";
            } # end of if
            else {
            print "FILE SIZE DOES NOT MATCH!!\n";
            } # end of else
            } # end of if
            else {
            print "FILE IS MISSING!!\n";
            } # end of else

            #system ("mv", $filename, "uploaded");

            $ftp->quit;




            ---- phrankpsinatra <phrankpsinatra@...> wrote:
            > I am new to the group, and I have a problem in getting Perl's Net::FTP module to work properly under a copy of Cygwin I have installed in Windows 7 (64-bit).
            >
            > I am using Net::FTP as a speedy way of uploading jpegs and other binaries from my desktop to my website. Some jpegs go through OK, but there are several files which are deformed in some way. Audio and video files often fail if played after being uploaded with this script.
            >
            > Below is my script. It's quite simple:
            >
            > #! /usr/bin/perl -w
            > #
            > # script to FTP images to vex.net and move such files to the "uploaded"
            > # directory.
            >
            > use Net::FTP;
            > use File::Copy;
            >
            > my $filename = $ARGV[0];
            > my $wd = "public_html/000HTML_sj/wp-content/uploads/";
            >
            > $ftp = Net::FTP->new("ftp.vex.net", Debug => 0)
            > or die "Cannot connect to ftp.vex.net: $@";
            >
            > print "Logging in ...\n";
            > $ftp->login("USER",'PASS') or die "Cannot login ", $ftp->message;
            >
            > $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;
            >
            > print "Uploading $filename to $wd ...\n";
            > $ftp->put($filename) or die "put failed ", $ftp->message;
            > system ("mv", $filename, "uploaded");
            >
            > $ftp->quit;
            >
            >
          • Phrank Psinatra
            I can t remember who pointed it out to me, but the bug in this program was a simple one, where all I needed to do was to add ftp- binary; before downloading.
            Message 5 of 7 , Dec 7, 2010
            • 0 Attachment
              I can't remember who pointed it out to me, but the bug in this program was a
              simple one, where all I needed to do was to add

              ftp->binary;

              before downloading. Looks like Cygwin's Net::FTP assumes ASCII by default.


              Paul



              ________________________________
              From: Tim Lewis <twlewis@...>
              To: perl-beginner@yahoogroups.com
              Cc: phrankpsinatra <phrankpsinatra@...>
              Sent: Mon, November 29, 2010 12:54:04 PM
              Subject: Re: [PBML] Net::FTP does not seem to work properly in Cygwin/Windows 7

              I cannot answer the question as to why Cygwin is causing an issue. I use both
              Windows FTP and Filezilla. However, I do have code in my ftp scripts to check
              the filesize, and then email me if it does not match. I have included an
              example below based on your original code.
              Tim

              #!/usr/local/bin/perl

              #! /usr/bin/perl -w
              #
              # script to FTP images to vex.net and move such files to the "uploaded"
              # directory.

              use Net::FTP;
              use File::Copy;


              my $filename = $ARGV[0];
              my $wd = "public_html/000HTML_sj/wp-content/uploads/";
              my $ftpSite='ftp.vex.net';
              my $ftpUser='username';
              my $ftpPassword='password';

              $ftp = Net::FTP->new($ftpSite, Debug => 0)
              or die "Cannot connect to $ftpSite: $@";

              print "Logging in ...\n";
              $ftp->login($ftpUser,$ftpPassword) or die "Cannot login ", $ftp->message;

              $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;

              print "Uploading $filename to $wd ...\n";
              $ftp->put($filename) or die "put failed ", $ftp->message;

              my @ftpList=$ftp->ls;
              print "Checking the existence of the file after the FTP process.\n";
              my $ftpFileCount = @ftpList;
              my $fileSize = -s $completeFile;
              my $ftpFileFound="false";
              my $ftpFileSizeMatch="false";
              my $lastSlash = (rindex($completeFile,"\\") + 1);
              my $fileName = substr($completeFile,$lastSlash);
              print "Checking file $fileName\n";
              for (my $count=0;$count<$ftpFileCount;$count++) {
              my $ftpFile = @ftpList[$count];
              if (uc($filename) eq uc($ftpFile)) {
              $ftpFileFound = "true";
              my $dosFileSize = -s $filename;
              my $ftpFileSize = $ftp->size($ftpFile);
              print "Byte size on local: $dosFileSize Byte size on remote:
              $ftpFileSize\n";
              if ($ftpFileSize eq $dosFileSize) {
              $ftpFileSizeMatch="true";
              } # end of if
              } # end of if
              } # end of for
              if ($ftpFileFound eq "true") {
              print "File was found on remote.\n";
              if ($ftpFileSizeMatch eq "true") {
              print "File size on remote matches file size on local.\n";
              } # end of if
              else {
              print "FILE SIZE DOES NOT MATCH!!\n";
              } # end of else
              } # end of if
              else {
              print "FILE IS MISSING!!\n";
              } # end of else

              #system ("mv", $filename, "uploaded");

              $ftp->quit;




              ---- phrankpsinatra <phrankpsinatra@...> wrote:
              > I am new to the group, and I have a problem in getting Perl's Net::FTP module
              >to work properly under a copy of Cygwin I have installed in Windows 7 (64-bit).
              >
              > I am using Net::FTP as a speedy way of uploading jpegs and other binaries from
              >my desktop to my website. Some jpegs go through OK, but there are several files
              >which are deformed in some way. Audio and video files often fail if played after
              >being uploaded with this script.
              >
              > Below is my script. It's quite simple:
              >
              > #! /usr/bin/perl -w
              > #
              > # script to FTP images to vex.net and move such files to the "uploaded"
              > # directory.
              >
              > use Net::FTP;
              > use File::Copy;
              >
              > my $filename = $ARGV[0];
              > my $wd = "public_html/000HTML_sj/wp-content/uploads/";
              >
              > $ftp = Net::FTP->new("ftp.vex.net", Debug => 0)
              > or die "Cannot connect to ftp.vex.net: $@";
              >
              > print "Logging in ...\n";
              > $ftp->login("USER",'PASS') or die "Cannot login ", $ftp->message;
              >
              > $ftp->cwd($wd) or die "Cannot change working directory ", $ftp->message;
              >
              > print "Uploading $filename to $wd ...\n";
              > $ftp->put($filename) or die "put failed ", $ftp->message;
              > system ("mv", $filename, "uploaded");
              >
              > $ftp->quit;
              >
              >



              ------------------------------------

              Unsubscribing info is here:
              http://help.yahoo.com/help/us/groups/groups-32.htmlYahoo! Groups Links






              [Non-text portions of this message have been removed]
            • Phrank Psinatra
              I don t use move (from DOS), instead favouring Cygwin s mv, which I am more familiar with. I would need to look up the syntax to remind myself of rename() ,
              Message 6 of 7 , Dec 7, 2010
              • 0 Attachment
                I don't use "move" (from DOS), instead favouring Cygwin's mv, which I am more
                familiar with. I would need to look up the syntax to remind myself of
                "rename()", where I don't if I want to use "system()" or "mv". Truth be known,
                it was probably pasted that way from the web page I took it from (don't know
                where from, now).

                Paul




                ________________________________
                From: "merlyn@..." <merlyn@...>
                To: phrankpsinatra <phrankpsinatra@...>
                Cc: perl-beginner@yahoogroups.com
                Sent: Sun, November 28, 2010 11:46:36 PM
                Subject: Re: [PBML] Net::FTP does not seem to work properly in Cygwin/Windows 7

                >>>>> "phrankpsinatra" == phrankpsinatra <phrankpsinatra@...> writes:

                phrankpsinatra> system ("mv", $filename, "uploaded");

                Why are you doing this *on windows*, when you have rename() available?

                --
                Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
                <merlyn@...> http://www.stonehenge.com/merlyn/>
                Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
                See http://methodsandmessages.posterous.com/ for Smalltalk discussion


                ------------------------------------

                Unsubscribing info is here:
                http://help.yahoo.com/help/us/groups/groups-32.htmlYahoo! Groups Links






                [Non-text portions of this message have been removed]
              • Tim Lewis
                I have a script that uses MIME:Lite and Net:SMTP to send out emails from a server. This script has worked for months with no problem. It will no longer send
                Message 7 of 7 , Dec 9, 2010
                • 0 Attachment
                  I have a script that uses MIME:Lite and Net:SMTP to send out emails from a
                  server. This script has worked for months with no problem. It will no
                  longer send emails. I can send emails directly with Net:SMTP, and I can
                  also send emails through VB using CDO.Message. There is something about the
                  server that has changed in which it no longer likes the MIME version. I
                  have checked the event logs, but cannot find any issue there. I would be
                  extremely appreciative if someone has an idea of what can be wrong with
                  this.



                  Tim





                  [Non-text portions of this message have been removed]
                Your message has been successfully submitted and would be delivered to recipients shortly.