Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^4: Send password in Net::SSH::Expect

by Corion (Patriarch)
on Jan 23, 2020 at 09:03 UTC ( [id://11111756]=note: print w/replies, xml ) Need Help??


in reply to Re^3: Send password in Net::SSH::Expect
in thread Send password in Net::SSH::Expect

I would first construct the complete command and use the same string for debugging and for running the command:

my $cmd = "ssh -qv $ssh_user\@$bkp_destination 'sed -i \"s#.*$hostname +#$skey#g\" /tmp/test.txt'"; warn "Launching [[$cmd]]"; system($cmd) == 0 or die "Couldn't launch ssh connection via [[$cmd]]: $? / $!";

That way, the command you use for debugging and the command you run cannot deviate.

Maybe using the # char (shell comment indicator) somewhere messes up your shell quoting. Even for readability, I would construct the shell string differently:

my $cmd = qq(ssh -qv $ssh_user\@$bkp_destination 'sed -i "s#.*$hostnam +e#$skey#g" /tmp/test.txt');

Replies are listed 'Best First'.
Re^5: Send password in Net::SSH::Expect
by gafaman (Novice) on Jan 23, 2020 at 09:24 UTC
    I updated the script with the construction you suggested but the output was the same. I also noticed that there was an "I" missing from the sed statement and added it. Script:
    my $cmd = qq(ssh -qv $ssh_user\@$bkp_destination 'sed -i "s#.*$hostnam +e#$skey#gI" /tmp/test.txt'); warn "Launching [[$cmd]]"; system($cmd) == 0 or die "Couldn't launch ssh connection via +[[$cmd]]: $? / $!";
    Output:
    debug1: pledge: network debug1: Sending environment. debug1: Sending env LANG = en_GB.UTF-8 #ssh-rsa AAAAB3NzaC1yc2 root@HOSTA#g" /tmp/test.txt debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com repl +y 0 debug1: channel 0: free: client-session, nchannels 1 Transferred: sent 3312, received 2392 bytes, in 0.1 seconds Bytes per second: sent 51671.7, received 37318.5 debug1: Exit status 0
    From the $bkp_destination host:
    user@bkphost:/tmp$ cat test.txt As123312123 asdasdadasqsef3w4rfweweweffwerfew As123312123 asdasdadasqsef3w4rfweweweffwerfew i12311231231231 HOSTA As123312123 asdasdadasqsef3w4rfweweweffwerfew user@bkphost:/tmp$ echo $h HOSTA user@bkphost:/tmp$ echo $k ssh-rsa AAAAB3NzaC1yc2 root@HOSTA user@bkphost:/tmp$ sed -i "s#.*$h#$k#gI" test.txt user@bkphost:/tmp$ cat test.txt As123312123 asdasdadasqsef3w4rfweweweffwerfew As123312123 asdasdadasqsef3w4rfweweweffwerfew ssh-rsa AAAAB3NzaC1yc2 root@HOSTA As123312123 asdasdadasqsef3w4rfweweweffwerfew
      warn "Launching [[$cmd]]";

      I don't see the output of that anywhere in your output, yet this is the thing that is giving you problems.

      If you don't see what is wrong in your local output, maybe share that output with us?

      Also, when you run the commands manually, why do you do:

      echo $h echo $k sed -i "s#.*$h#$k#gI" test.txt

      when the command you are having trouble with is something else?

      sed -i "s#.*HOSTA#ssh-rsa AAAAB3NzaC1yc2 root@HOSTA#gI" /tmp/test.txt

      Try to bring your manual interaction as close to the scripted interaction as possible. Only then you can see where the difference is between the two things that makes one fail and one succeed.

        I couldn't find that in the output as well, not sure why. when I run it manually, I am declaring the variables first and running the sed command as it is done by the script, with the variables. I only used the "echo" commands to show their contents. Running it with the variable contents also works fine, by the way.
        Please find below the full output. #ssh-rsa AAAAB3NzaC1yc2 root@HOSTA#gI" /tmp/test.txt']] at ./key.pl li +ne 70. OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 58: Applying options for * debug1: Connecting to 10.11.12.13 [10.11.12.13] port 22. debug1: Connection established. debug1: identity file /opt/spectrum/.ssh/id_rsa type 1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /opt/spectrum/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.4 debug1: Remote protocol version 2.0, remote software version OpenSSH_6 +.6.1 debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000 debug1: Authenticating to 10.11.12.13:22 as 'triple-n' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256@libssh.org debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: aes128-ctr MAC: umac-128-etm@opens +sh.com compression: none debug1: kex: client->server cipher: aes128-ctr MAC: umac-128-etm@opens +sh.com compression: none debug1: kex: curve25519-sha256@libssh.org need=16 dh_need=16 debug1: kex: curve25519-sha256@libssh.org need=16 dh_need=16 debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:k0DWcaruzakooNGMgJ +dC/MR4hdqsXJhVx195BC/d1VM debug1: Host '10.11.12.13' is known and matches the ECDSA host key. debug1: Found key in /opt/spectrum/.ssh/known_hosts:13 debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_SERVICE_ACCEPT received |-----------------------------------------------------------------| | This system is for the use of authorized users only. | | Individuals using this computer system without authority, or in | | excess of their authority, are subject to having all of their | | activities on this system monitored and recorded by system | | personnel. | |-----------------------------------------------------------------| debug1: Authentications that can continue: publickey,password,keyboard +-interactive debug1: Next authentication method: publickey debug1: Offering RSA public key: /opt/spectrum/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: Authentication succeeded (publickey). Authenticated to 10.11.12.13 ([10.11.12.13]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network debug1: Sending environment. debug1: Sending env LANG = en_GB.UTF-8 #ssh-rsa AAAAB3NzaC1yc2 root@HOSTA#gI" /tmp/test.txt debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com repl +y 0 debug1: channel 0: free: client-session, nchannels 1 Transferred: sent 3312, received 2392 bytes, in 0.1 seconds Bytes per second: sent 43267.6, received 31248.8 debug1: Exit status 0

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11111756]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-04-24 23:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found