in reply to Re: net::ftp - passwords
in thread net::ftp - passwords

Hi there, I wanted some help for this problem, simply wanted to pass any old password the user should happen to create in the Net::ftp login ("username", "userid") I tried the ENV construct out of desperation, I tried uri_escape. (Does it escape all possible entries?) What to do, any guidance appreciated Regards My test password was a doozy "Peleton@1" I tried: 1) Setting it as a litteral in the program, that works ie logs in but doesn't solve my problem

do_ftp() { PASSW="Peleton\@1";export PASSW /usr/bin/perl -e ' use warnings; use Net::FTP; use URI::Escape; my $host = $ARGV[0]; my $userid = $ARGV[1]; #my $passw = $ENV{'PASSW'}; #my $passw = $ARGV[2]; my $passw = "Peleton@1"; print "Host:$host\n"; print "user:$userid\n"; print "passw:$passw\n"; my $string = $passw; my $encode = uri_escape($string); print "encode:$encode\n"; my $ftp = Net::FTP->new($host, Timeout=>10); if (! $ftp) { print "connection failed!\n"; exit 1; } else { print "connected!\n"; } if (! $ftp->login($userid, $encode)) { print "login failed!\n"; exit 2; } else { print "login succeeded!\n"; } $ftp->close(); exit 0;' "ssssshostname.com" "dcatbond" "Peleton\@1" } # MAIN do_ftp

Replies are listed 'Best First'.
Re^3: net::ftp - passwords
by roboticus (Chancellor) on May 16, 2012 at 00:27 UTC

    fagersz:

    I'd suggest changing line 33 from this:

    if (! $ftp->login($userid, $encode)) {

    to this:

    if (! $ftp->login($userid, $passw)) {

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      Thank you roboticus, I will try to define my problem in broad terms, the example code is a result of many attempts to solve this. It may not be perfectly accurate. I want my perl program to read in a list of servers,passwords, accounts, source file from say, a comma delimited file, then for each line of the input ftp the file to the destination server. Very easy to do!! Except, when you encounter reserved characters in the user defined password. One example of a user defined password that fails to connect is "Peleton@1". All manor of quote combinations was used. Note When "Peleton@1" is declared as a literal in the program successful connection is achieved, so the issue is in the parameter passing process. Thank you

        fagersz:

        If you don't show the code that you're having a problem with, how can we help? I made my suggestion based on the code you gave us.

        Anyway, you *shouldn't* need to escape the special characters in the password. Why don't you present the actual code you're trying to fix, and give us the error messages that you receive, and we can go from there.

        ...roboticus

        When your only tool is a hammer, all problems look like your thumb.