How to escape Special Characters in Expect programming?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to escape Special Characters in Expect programming?
# 1  
Old 11-26-2012
How to escape Special Characters in Expect programming?

Hi,

I have written a unix expect utility "ssh-login.exp" which connects (ssh) to remote host and execute some shell script. I am calling this "ssh-login.exp" utility from another shell script.

"ssh-login.exp" takes username, password, host and shell script path to execute on remote host. All works fine for alphanumeric password. If password has any special characters like "$" this "ssh-login.exp" doesn't work. I have already added code to add escape character before any special characters password may have.

e.g. for password string "welcome$123" and I send "welcome\$123".

But the problem is, when expect utility "ssh-login.exp" sends password to remote host it prepends '{' and appends '}' to password string if password has any special characters. if password doesn't have any special characters then it sends password without '{' and '}' and works fine.

e.g. for password "welcome$123" expect program sends "{welcome\$123}", in fact it should send "welcome\$123" (without '{' and '}' ) and remote machine don't allow the entry because of wrong password.

So I am trying to find out a way to get rid of '{' and '}' from password string before sending it to remote host in case password has any special characters.

Here is my expect script : "ssh-login.exp":

Code:
#!/usr/bin/expect -f

set username [lrange $argv 0 0]
set password [lrange $argv 1 1]
set host [lrange $argv 2 2]
set script [lrange $argv 3 3]

set prompt "*$*"

set scriptIO  [open ./$script r]
set scriptContents [read -nonewline $scriptIO]
close $scriptIO

spawn ssh -q -o StrictHostKeyChecking=no $username@$host

#match_max 100000

while (1) {
        expect {
                "no)? " {
                        send -- "yes\r"
                        send -- "\r"
                }
                "*?assword:*" {
                        send -- "$password\r"
                        send -- "\r"
                }
                "$prompt" {
                        send -- "pwd\r"
                        send -- "\r"
                        break;
                }
        }
}

send -- "\r"

send -- "$scriptContents\r"

send -- "exit\r"

expect eof

Please let me know if someone has already faced this issue and were able to resolve the same.

Thanks,

Last edited by Mahesh Desai; 11-27-2012 at 01:36 PM..
# 2  
Old 11-28-2012
Any help would be greatly appreciated!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to escape all special characters?

I have an application which I am integrating with that accepts the password via a CLI. I am running in to issues with passwords that contain special characters. I tried to escape them all, but I ran in to an issue where I cannot escape the characters ' ] My attempt is as follows: $... (2 Replies)
Discussion started by: AMG1978
2 Replies

2. Shell Programming and Scripting

Expect Special Characters

Hi, I am familiar with using a backslash to escape a $ in a send command, but this device I am using expect to talk to has a regex expression that I need to input and it is a bear. Is there a list of all the characters that require escaping in an expect send statement ? Here is what I need to... (0 Replies)
Discussion started by: ob2s
0 Replies

3. Shell Programming and Scripting

Auto escape script to escape special chars in script args

This is a bit off the wall, but I often need to run scripts where there are argument values that contain special characters. For example, $ ./process.exe -t M -N -o temp.mol.s -i ../molfiles/N,N\',N\'\'-trimethylbis\(hexamethylene\)triamine.mol && sfile_space_to_tab.sh temp.mol.s temp.s It... (1 Reply)
Discussion started by: LMHmedchem
1 Replies

4. Shell Programming and Scripting

Escape special characters in SED

Need help in escaping special characters in sed command. Here is the the string which i am trying to find a replace with From :- REQUEST_TYPE=PIXEL&MSG_ID={//MESSAGE_ID} To :- REQUEST_TYPE=PIXEL&MSG_ID= X_EDELIVERY_MESSAGE_ID & BATCH_ID= X_EDELIVERY_BATCH_ID Here is the sed command i am... (2 Replies)
Discussion started by: aakishore
2 Replies

5. Shell Programming and Scripting

Need help with sed to escape special characters

Hello Everyone, I need to read an encrypted password from the user and update that value in an xml file. I am trying to use "sed" for searching the appropriate tag and replacing this new value that get from the user. Since the encrypted password can contain special characters(like /,\,&,etc),... (4 Replies)
Discussion started by: majose
4 Replies

6. Shell Programming and Scripting

expect script with special characters?

Hello all, I'm writing an expect script that will connect to an IMAP server and issue IMAP commands. The problem is that some of the text I need to send includes "quotes" and also !@#$%^&* special characters. For example, my password is VFR$5tgb but I cannot "send" this because Expect doesn't... (2 Replies)
Discussion started by: lupin..the..3rd
2 Replies

7. Shell Programming and Scripting

Replace special characters with Escape characters?

i need to replace the any special characters with escape characters like below. test!=123-> test\!\=123 !@#$%^&*()-= to be replaced by \!\@\#\$\%\^\&\*\(\)\-\= (8 Replies)
Discussion started by: laknar
8 Replies

8. Shell Programming and Scripting

Replace new line with <br /> & escape special characters

Hi, I wish to replace a new line with br (html) but it doesn't seem to work message=$(echo ${FORM_message} | tr '\r' '<br \/>' ) what it gives me seems to be ... b...? I am also having problem escaping hash sign in cut command: list=$(echo "$line" | cut -d'\#;\#' -f1) ; my intention is... (2 Replies)
Discussion started by: ted_chou12
2 Replies

9. Shell Programming and Scripting

awk print $1 escape all special characters

I'm using awk '{print $1}' and it works most of the time to print the contents of a mysql query loop, but occationally I get a field with some special character in it, is there a way to tell awk to ignore all special characters between my FS? I have >186K records, so building a list of ALL special... (6 Replies)
Discussion started by: unclecameron
6 Replies

10. UNIX for Dummies Questions & Answers

Need help to escape special characters in Korn shell script

Hi, I would like to display the following message from my shell (Korn) script Copy "old_file.txt" to "new_file.txt" My code looks as follows print "Copy "old_file.txt" to "new_file.txt"" However, when I execute the script, I get the following output Copy old_file.txt to... (6 Replies)
Discussion started by: rogers42
6 Replies
Login or Register to Ask a Question