21130

how to give user name and password as a input in scp module?

Question:

I am trying to copy a files from one host to another host using :

Net::SCP::Expect

here is my program.

use strict; use Net::SCP::Expect; print "enter user name\n"; my $username = <>; print "enter password\n"; my $pass = <>; print "enter host name\n"; my $host = <>; my $src_path = "/"; my $dst_path = "/"; my $scpe = Net::SCP::Expect->new(user=>$username, password=>$pass, auto_yes=> '1'); $scpe->scp($host.":".$src_path, $dst_path);

I am getting error as bad password.how to give user name and password as a input in scp module?

Answer1:

All three variables you are reading also contain the \n at the end.

Remove it with <a href="http://perldoc.perl.org/functions/chomp.html" rel="nofollow">chomp</a>

chomp $username; chomp $pass; chomp $host;

Beware that the password will be visible on the user's screen. You could take a look at <a href="http://search.cpan.org/~phoenix/Term-ReadPassword-0.11/ReadPassword.pm" rel="nofollow">Term::ReadPassword</a> to avoid echoing of the characters on the screen.

<strong>Edit</strong>

chomp modifies the supplied variable and return the number of characters removed. In your case chomp($username) will return 1 as it removed one character. You have to call it before scp

#!/usr/bin/perl use strict; use warnings; use Net::SCP::Expect; print "enter user name\n"; my $username = <>; chomp($username); ### Here print "enter password\n"; my $pass = <>; chomp($pass); ### Here print "enter host name\n"; my $host = <>; chomp($host); ### Here my $src_path = '/'; my $dst_path = '/'; my $scpe = Net::SCP::Expect->new( user => $username, password => $pass, auto_yes => '1' ); $scpe->scp( $host . ':' . $src_path, $dst_path );

From the linked documentation (emphasis mine)

chomp( LIST ) chomp This safer version of "chop" removes any trailing string that corresponds to the current value of $/ (also known as $INPUT_RECORD_SEPARATOR in the "English" module). <b>It returns the total number of characters removed from all its arguments.</b> It's often used to remove the newline from the end of an input record when you're worried that the final record may be missing its newline. When in paragraph mode ("$/ = """), it removes all trailing newlines from the string. When in slurp mode ("$/ = undef") or fixed-length record mode ($/ is a reference to an integer or the like; see perlvar) chomp() won't remove anything. If VARIABLE is omitted, it chomps $_. Example: while () { chomp; # avoid \n on last field @array = split(/:/); # ... } If VARIABLE is a hash, it chomps the hash's values, but not its keys, resetting the "each" iterator in the process. You can actually chomp anything that's an lvalue, including an assignment: chomp($cwd = `pwd`); chomp($answer = ); If you chomp a list, each element is chomped, and the total number of characters removed is returned. Note that parentheses are necessary when you're chomping anything that is not a simple variable. This is because "chomp $cwd = `pwd`;" is interpreted as "(chomp $cwd) = `pwd`;", rather than as "chomp( $cwd = `pwd` )" which you might expect. Similarly, "chomp $a, $b" is interpreted as "chomp($a), $b" rather than as "chomp($a, $b)".

Recommend

  • Trying to store input as a Hashmap in ruby
  • Difference between gets, gets.chomp and gets.chomp!?
  • How to re-prompt and re-use a user's input
  • Retrieve online data and generate and xml output of it
  • How to read data from Excel sheet in Linux using Shell Script? [closed]
  • Perl - parallel programming - running two external programs
  • rearrange data from one column to a row
  • Perl program to find matching words in a paragraph
  • How does Perl store/deal with very large numbers? Should one use a module in lieu of Perl's def
  • Powershell(cmd too) doesn't recognize special characters “ą, ę” etc
  • How to read from a file and do a grep in Perl?
  • javascript text field counter display
  • in Perl, how to redirect a “print” to a variable rather than display on the screen
  • Export variable from a shell script into a perl script
  • PHP/mysql site using utf8mb4 won't retrieve emojis correctly from database, despite utf8mb4 bei
  • How to handle Win32 Application termination
  • Why does my code break when using a hash symbol, instead of a hash string?
  • Creating Wordpress like shortcode in laravel blade
  • How to properly declare hash outside BEGIN block?
  • Mixing PDO and MySQL Functions?
  • Creating a SOAP proxy?
  • D3.js rotate axis labels around the middle point
  • How to shorten this expression using regex
  • Shuffle objects in PHP
  • TFS Builds: Running the builds as administrator
  • Substitution Method - How to find two tags with a newline inbetween using Perl?
  • How to Cache Images Dynamically-Generated with PHP?
  • custom string delimiters stringtemplate-4
  • Validate jQuery plugin, field not required
  • How to make JSON.NET deserialize to Microsoft Date Time?
  • How to add a focus style to an editable ComboBox in WPF
  • how to avoid repetitive constructor in children
  • How to get Eclipse Oxygen to run on Java 9
  • Control modification in presentation layer
  • What is the “return” in scheme?
  • When should I choose bucket sort over other sorting algorithms?
  • How do you troubleshoot character encoding problems?
  • How to format a variable of double type
  • How to Embed XSL into XML
  • jQuery Masonry / Isotope and fluid images: Momentary overlap on window resize