Hi all,
I have wriiten an expect script that genearates a public private key pair through ssh-keygen and then copies that key to the authorized keys file of the remote system . The problem i am facing is when i get a password for the remote machine containg a trailing backslash , the send command in expect fails to perform its function.
The expect script is as follows :
NOTE : I am passing the credentials such as password , username etc. through commandline, The password is the 5th command line argument to the script
#! /bin/sh
set $*
EXPECT_BIN=`which expect`
$EXPECT_BIN <<EOF
set timeout -1
spawn ssh-keygen -t dsa
expect "Enter file in which to save the key (/root/.ssh/id_dsa):"
send "$KEY_FILE_PATH\r"
expect "/root/.ssh/id_dsa already exists."
expect "Overwrite (y/n)?"
send "y\r"
expect "Enter passphrase (empty for no passphrase):"
send "$PASS_PHRASE\r"
expect "Enter same passphrase again:"
send "$PASS_PHRASE\r"
expect ">"
spawn $7 $6 $3 $4
expect "$3@$4's password:"
send "$5\r"
expect ">"
send "bye\r"
EOF
I would be glad if i can get a solution for this as soon as possible
Thanks