Net FTP -- Size showing different results on AIX system and Linux system

Discussion in 'Perl Misc' started by fmbright, Aug 7, 2006.

  1. fmbright

    fmbright Guest

    To All:

    This is my first post. My name is Frank. I have been using Net FTP
    to create an automated FTP process. I developed it on an AIX box (AIX
    5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    subroutine gives different results when running on the AIX version
    Linux box. On the AIX the size functions returns the size of the file
    on the FTP while the call on the Linux box returns undefined.

    I am calling the same FTP site each time and using the same version of
    the script. What else would need to be done to get these version in
    sync??

    Thanks!


    Frank Bright
    Univ. of the Arts
    215.717.6081
    fmbright, Aug 7, 2006
    #1
    1. Advertising

  2. fmbright

    Guest

    fmbright wrote:
    > This is my first post. My name is Frank.


    Hi, Frank. Being new here, you are probably not aware of the posting
    guidelines for this group, which you may read online at:

    http://www.augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html

    You will notice that the guidelines suggest posting a small, functional
    program which demonstrates your problem.

    If you had done that, I would be happy to cut-and-paste your code into
    my editor and try to reproduce your results (as I have access to both
    AIX and Linux systems). Because (had you followed the posting
    guidelines) you would have made it very easy to help you.

    But you have not made it easy for me to help you. In fact, any help I
    would be able to offer would be limited to idle speculation, as I have
    no idea what your code looks like.

    The posting guidelines are for your benefit - they help you ask a good
    question and thus increase the chances of getting a good answer. You
    would do well to read them prior to your next posting.

    --
    David Filmer (http://DavidFilmer.com)
    , Aug 7, 2006
    #2
    1. Advertising

  3. fmbright

    fmbright Guest

    Sorry All!!

    My bad.... here is the snipett of the problem. Forgive my spelling,
    that is why I went into computers!!

    You will see the vars $filetime and $filesize. They record the calls
    to mdtm and size. On our AIX box the calls return info. On our linux
    box these calls return undef. And we are testing to the same ftp site.

    Any suggestions the same calls on two boxes would give two different
    results??

    FMB

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

    #!/usr/bin/perl -w
    use strict;
    use Getopt::Long;
    use Net::FTP;
    use Time::Local;

    use Carp ();
    local $SIG{__WARN__} = \&Carp::cluck;

    ## Variables
    my($ftp) = ""; my $login = ""; my $passwd =
    "";
    my $host = ""; my $host_dir = ""; my $binary = 0;
    my $quiet = 0; my $ftp_get = 1; my $ftp_put = 0;
    my $localdir = ""; my $debug = 0; my $ascii = 0;
    my $date_name = 0; my @rlist = (); my $help = "";
    my $anonymous = ""; my $chown = ""; my $chmod = "";
    my $before_date = 0; my $after_date = 0;

    ## Get Command Line Options!
    do_get_options();

    if ($debug) {
    print "Printing settings\n";
    print "\t\$login = ".$login ."\n";
    print "\t\$passwd = ".$passwd ."\n";
    print "\t\$host = ".$host ."\n";
    print "\t\$host_dir = ".$host_dir ."\n";
    print "\t\$localdir = ".$localdir ."\n";
    print "\t\$binary = ".$binary ."\n";
    print "\t\$quiet = ".$quiet ."\n";
    print "\t\$ftp_get = ".$ftp_get ."\n";
    print "\t\$ftp_put = ".$ftp_put ."\n";
    print "\t\$debug = ".$debug ."\n";
    }

    ## Check Options -- print help if necessary!
    check_options();

    ## Try getting files (default)
    do_get_ftp() unless $ftp_put;

    ## decrypt with gpg if asekd!
    do_decrypt(@rlist) if $decrypt;


    exit;

    # FTP files from site!
    sub do_get_ftp {
    $login = "anonymous" if $anonymous; # Set anonymous login.
    $anonymou
    s
    $passwd = $anonymous if $anonymous; # will have user's
    email address
    !

    print "\nStarting FTP!\nAttempting to connect to host ...
    ".$host if !$q
    uiet;
    $ftp = Net::FTP->new($host, Debug => $debug)
    || die "\nCannot connect to ".$host.$ftp->message."\n";

    print " (Connected!)\nAttempting to login as ... ".$login if
    !$quiet;
    $ftp->login($login,$passwd)
    || die "\nCannot login to ".$host." -
    ".$ftp->message."\n";

    print " (Logged in!)\n";
    print "Changing directory to ".$host_dir."\n" if !$quiet &&
    $host_dir;
    $ftp->cwd($host_dir) || die "Cannot change to directory
    ".$host_dir." -
    ".$ftp->message if $host_dir;
    $host_dir = $ftp->pwd if !$host_dir;
    print "Current directory ".$host_dir."\n" if !$quiet;

    print "Setting transfer mode to binary\n" if !$quiet &&
    $binary;
    $ftp->binary || die "Cannot set transfer mode to binary -
    ".$ftp->messag
    e if $binary;

    print "Setting transfer mode to ASCII\n" if !$quiet && $ascii;
    $ftp->ascii || die "Cannot set transfer mode to ascii -
    ".$ftp->message
    if $ascii;

    print "Retrieving files ...\n" if !$quiet;
    print " ...saving to folder $localdir\n" if $localdir &&
    !$quiet;
    print " ...before ".&print_time($before_date) if $before_date
    && !$quie
    t;
    print " ...after ".&print_time($after_date) if !$quiet &&
    $after_date;
    print " ...using filter -> ".$ftp_patt."\n" if $ftp_patt &&
    !$quiet;
    my($list)=$ftp->ls() || die "Cannot retrieve files from
    directory - ".$h
    ost_dir."\n".$ftp->message."\n";
    $ftp_patt =~ s/\.\.\./.*/g if $ftp_patt; $ftp_patt =~
    s/\?/.?/g if $ft
    p_patt;
    @$list = grep(/$ftp_patt/, @$list) if $ftp_patt; # Apply
    pattern filt
    er!
    foreach my $get (@$list) {
    my $local_put = ($localdir) ? $localdir."/".$get :
    $get;
    my $filetime = $ftp->mdtm($get);
    my $filesize = $ftp->size($get);
    my $y = &pass_date_filter($filetime);
    if ($y) {
    $ftp->get("$get", $local_put) || die "\nFailed
    retrievin
    g $_ ->".$ftp->message."\n";
    print " ".$get." ".&print_time($filetime)."
    ".$files
    ize."\n" if !$quiet;
    push @rlist,$local_put;
    }
    }
    print "No files were retrieved!\n" if !$quiet && !@rlist;
    print "Finished retrieving files!\n" if !$quiet && @rlist;
    print "Disconnecting!\n" if !$quiet;
    $ftp->quit() || die "Failed to quit ftp!\n", $ftp->message;
    }

    sub print_time {
    my $x = shift;
    my @x = localtime($x);
    return sprintf("%02d.%02d.%04d", $x[4]+1, $x[3], $x[5]+1900);
    }

    sub get_date_name {
    my @x = localtime(time);
    return sprintf("_%02d%02d%4d",$x[4]+1,$x[3],$x[5]+1900);
    }

    sub pass_date_filter {
    my $x = shift;
    return 1 if !$before_date && !$after_date;
    return 1 if $before_date && $after_date && $x < $before_date &&
    $x > $af
    ter_date;
    return 1 if $before_date && $x < $before_date && !$after_date;
    return 1 if $after_date && $x > $after_date && !$before_date;
    return 0;
    }


    fmbright wrote:
    > To All:
    >
    > This is my first post. My name is Frank. I have been using Net FTP
    > to create an automated FTP process. I developed it on an AIX box (AIX
    > 5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    > subroutine gives different results when running on the AIX version
    > Linux box. On the AIX the size functions returns the size of the file
    > on the FTP while the call on the Linux box returns undefined.
    >
    > I am calling the same FTP site each time and using the same version of
    > the script. What else would need to be done to get these version in
    > sync??
    >
    > Thanks!
    >
    >
    > Frank Bright
    > Univ. of the Arts
    > 215.717.6081
    >
    fmbright, Aug 7, 2006
    #3
  4. fmbright

    Guest

    fmbright wrote:
    > Sorry All!!
    >
    > My bad.... here is the snipett of the problem.


    Your bad again. That's not a snippet. That's over 100 lines, many of
    which wrap.

    I think you missed the point of the suggestion in the guidelines. Let's
    review:

    >> First make a short (less than 20-30 lines) and complete program that
    >> illustrates the problem you are having. People should be able to run
    >> your program by copy/pasting the code from your article. (You will
    >> find that doing this step very often reveals your problem directly.


    That doesn't mean cut-and-paste your entire program. That means pare
    your program down into the smallest and simplest program which
    demonstrates the problem. That would not include dozens of lines of
    debugging code or subroutines to do date and time manipulation (as
    these are not relevant to your question).

    There have been many times that I have considered posting a question to
    usenet. In the process of preparing my question, I have rewritten my
    code per the guidelines and, in doing so, have discovered the answer to
    my own question. I have found that this is a great debugging
    technique.

    Also, the CLPMisc guidelines first refer you to general guidelines
    which are applicable to any technical group (namely
    http://www.catb.org/~esr/faqs/smart-questions.html). Those guidelines
    wisely suggest that you limit your linewidth. Some newsreaders
    (including your own 'reader', GoogleGroups) wrap long lines, which
    impedes readability, and if cut-and-pasted into an editor, those would
    come in as two different lines. It's wise to not exceed 70 columns
    (that gives a few spare columns if someone wants to quote-back code
    without it wrapping).

    --
    David Filmer (http://DavidFilmer.com)
    , Aug 7, 2006
    #4
  5. fmbright

    Simon Taylor Guest

    Re: Net FTP -- Size showing different results on AIX system and Linuxsystem

    Hello Frank,

    > This is my first post. My name is Frank. I have been using Net FTP
    > to create an automated FTP process. I developed it on an AIX box (AIX
    > 5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    > subroutine gives different results when running on the AIX version
    > Linux box. On the AIX the size functions returns the size of the file
    > on the FTP while the call on the Linux box returns undefined.
    >
    > I am calling the same FTP site each time and using the same version of
    > the script. What else would need to be done to get these version in
    > sync??


    As others have said, the discipline of creating the smallest possible
    instance of your problem often highlights the problem directly.

    Nonetheless, I'm feeling generous, so see below for the sort of
    example they're talking about.

    Once you've modified the code to supply sensible values for
    $host, $login and $passwd, do you really get different results
    talking to the same ftp server from Linux and from AIX?

    Regards,

    Simon Taylor
    --
    www.perlmeme.org


    #!/usr/bin/perl
    use strict;
    use warnings;
    use Net::FTP;

    my $host = 'nnn.nnn.nnn.nnn';
    my $debug = 0;
    my $login = 'xxxxxx';
    my $passwd = 'xxxxxx';
    my $host_dir = '/tmp';
    my $file = 'some_file';

    my $ftp = Net::FTP->new($host, Debug => $debug)
    or die "Cannot connect to $host";

    $ftp->login($login, $passwd)
    or die "Cannot login to $host";

    $ftp->cwd($host_dir)
    or die "Cannot change to directory $host_dir";

    $ftp->binary()
    or die 'Cannot set transfer mode to binary';

    my $filesize = $ftp->size($file);
    print "Filesize: $filesize\n";

    $ftp->quit();
    exit 0;
    Simon Taylor, Aug 8, 2006
    #5
  6. fmbright

    l v Guest

    Re: Net FTP -- Size showing different results on AIX system and Linuxsystem

    fmbright wrote:
    > To All:
    >
    > This is my first post. My name is Frank. I have been using Net FTP
    > to create an automated FTP process. I developed it on an AIX box (AIX
    > 5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    > subroutine gives different results when running on the AIX version
    > Linux box. On the AIX the size functions returns the size of the file
    > on the FTP while the call on the Linux box returns undefined.
    >
    > I am calling the same FTP site each time and using the same version of
    > the script. What else would need to be done to get these version in
    > sync??
    >
    > Thanks!
    >
    >
    > Frank Bright
    > Univ. of the Arts
    > 215.717.6081
    >
    >


    Are your Net::FTP modules the same version?

    --

    Len
    l v, Aug 8, 2006
    #6
  7. fmbright

    fmbright Guest

    Len,

    I installed the latest copies from CPAN and installed the lastest
    version of Perl on both boxes. Could the different unixes make
    different results??

    Thanks!

    Frank

    l v wrote:
    > fmbright wrote:
    > > To All:
    > >
    > > This is my first post. My name is Frank. I have been using Net FTP
    > > to create an automated FTP process. I developed it on an AIX box (AIX
    > > 5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    > > subroutine gives different results when running on the AIX version
    > > Linux box. On the AIX the size functions returns the size of the file
    > > on the FTP while the call on the Linux box returns undefined.
    > >
    > > I am calling the same FTP site each time and using the same version of
    > > the script. What else would need to be done to get these version in
    > > sync??
    > >
    > > Thanks!
    > >
    > >
    > > Frank Bright
    > > Univ. of the Arts
    > > 215.717.6081
    > >
    > >

    >
    > Are your Net::FTP modules the same version?
    >
    > --
    >
    > Len
    fmbright, Aug 8, 2006
    #7
  8. fmbright

    fmbright Guest

    Hi Len,

    I get the correct filesizes when I do an ftp from both boxes. And when
    I do a windows FTP to the site.

    FMB

    l v wrote:
    > fmbright wrote:
    > > Len,
    > >
    > > I installed the latest copies from CPAN and installed the lastest
    > > version of Perl on both boxes. Could the different unixes make
    > > different results??
    > >
    > > Thanks!
    > >
    > > Frank
    > >
    > > l v wrote:
    > >
    > >>fmbright wrote:
    > >>
    > >>>To All:
    > >>>
    > >>>This is my first post. My name is Frank. I have been using Net FTP
    > >>>to create an automated FTP process. I developed it on an AIX box (AIX
    > >>>5.2.0.7) and now want to move it to our Linux box (Redhat). The size
    > >>>subroutine gives different results when running on the AIX version
    > >>>Linux box. On the AIX the size functions returns the size of the file
    > >>>on the FTP while the call on the Linux box returns undefined.
    > >>>
    > >>>I am calling the same FTP site each time and using the same version of
    > >>>the script. What else would need to be done to get these version in
    > >>>sync??
    > >>>
    > >>>Thanks!
    > >>>

    >
    > I don't know. What file sizes do you get when you use native ftp
    > clients on each box?
    > --
    >
    > Len
    fmbright, Aug 10, 2006
    #8
  9. fmbright

    Guest

    fmbright wrote:
    > I get the correct filesizes when I do an ftp from both boxes. And when
    > I do a windows FTP to the site.


    I believe folks are still waiting for your small complete sample
    program which illustrates your problem (similar to the example that
    Simon kindly posted).

    I don't think you have yet grasped the importance of this aspect of
    asking a good question. Allow me to demonstrate...

    I was recently having problems working with a server (a news server,
    not an FTP server, but that doesn't really matter). My "problem
    program" is hundreds of lines long with lots of comments and debugging.
    But take a look at the question I posted:

    http://tinyurl.com/mw9jh
    or <>

    Notice a SHORT (only a dozen lines) but COMPLETE example of the
    specific problem I was having which anyone in usenet could
    cut-and-paste into their editor and try it out. And, whadda ya know,
    somebody did!

    Notice that about an hour later, a responder had kindly identified the
    source of the problem, and about an hour after that he kindly furnished
    code which illustrated and corrected my problem. We had further
    productive conversation where I learned some more about the module I
    was using (including some methods that aren't in the perldocs).

    In less than three hours, I knew EXACTLY what was wrong and EXACTLY how
    to fix it. That's because I got a good answer. One of the most
    important reasons why I got a good answer was because I asked a good
    question. I closely conformed to the CLPMisc posting guidelines and I
    got polite, fast, and expert help.

    I got a good answer in three HOURS. You still have not gotten a good
    answer after three DAYS. That's because you STILL have not asked a
    good question. We have described the task; we have pointed you to the
    guidelines; we have given you a nearly-complete example. We have TRIED
    to show you how to ask a good question but you persist in ignoring our
    advice.

    The only person that harms is you.

    --
    David Filmer (http://DavidFilmer.com)
    , Aug 10, 2006
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Andreas Klemt
    Replies:
    6
    Views:
    10,993
    Peter Theill
    Nov 28, 2004
  2. Replies:
    1
    Views:
    676
  3. ClownPleco

    putenv for AIX and ifdef for AIX

    ClownPleco, Aug 22, 2007, in forum: C Programming
    Replies:
    5
    Views:
    1,101
    Thomas Dickey
    Aug 24, 2007
  4. Replies:
    5
    Views:
    183
    Philippe Lucas
    Jul 8, 2005
  5. D. Buck
    Replies:
    2
    Views:
    458
    D. Buck
    Jun 29, 2004
Loading...

Share This Page