I have an expect script that gets called from an AppleScript Studio app that basically takes arguments for user name, password, and server address and then calls rsync. Everything works wonderfully, EXCEPT (there had to be one of those) if the user name starts with a t, such as "test_student", the t gets converted to a 'tab' and I instead get "[tab]est_student", which obviously won't authenticate properly.
In the following code, the problem happens at the end of the spawn line, the $login variable has the problem (although I haven't tested to see if $server and $password variables have the same problem).
I guess my question is if there is a way to make it so that expect just enters the text and doesn't try to do fancy [tabs] and such? Is there a best practice in a script like this to make sure that doesn't happen?
Slashes as escape characters don't seem to work...
Thanks for taking the time to offer your suggestion sysgate. I just tried modifying the script to use both forward and backward slashes, neither did what I wanted, but they had very different results...
When I used a backward slash (\) I got the following rsync command out of the expect script - the escape character seems to have just nulled the $ so I get the variable name inserted, rather than the variable's value:
When I used a forward slash (/) I got the following,which is the same as before, adding an unwanted [tab]:
I even tried entering both / and \ in front of test_student right in the original command and that doesn't help either... / just adds the / in front of test_student (so does get rid of the [tab], but also doesn't give the right command) and \ doesn't seem to do anything, still end up with [tab]est_student.
What IS interesting to me is that I entered the server as 'time' simply to test if that 't' was also coming out as a [tab] - as you can see from the results, it isn't - I suspect because it's immediately behind the @ character. So perhaps this is something to do with having the variable right after a space.
I don't understand why this script attempts to escape the variable notation ($)
preceding the argv list.
it is utterly broken this way.
example:
Short answer: There is no need to escape the dollar sign notation and it breaks interpretation of characters during command expansion.
I removed the \\'s from the argv entries at the beginning of the script and that seems to have fixed the problem. It's been a while since I wrote this script originally, but I believe I grabbed that syntax from a sample script I found online, so big ooops I guess.
Thanks for pointing out what I wasn't seeing, may much good karma come your way .
I'm fairly new to scripting so this might not be possible.
I am using Expect with Cisco switches and need to capture the string after finding the expect request. For example, when I issue "show version" on a Nexus switch, I'm looking to capture the current firmware version:
#show version
... (0 Replies)
I have an expect script called remote that I want to call from inside my expect script called sudoers.push, here is the code that is causing me issues:
set REMOTE "/root/scripts/remote"
...
log_user 1
send_user "Executing remote script as $user...\n"
send_user "Command to execute is: $REMOTE... (1 Reply)
Hi,
Am very new to expect scripting..
Can You please suggest me how to call an expect script inside another expect script..
I tried with
spawn /usr/bin/ksh
send "expect main.exp\r"
expect $root_prompt
and
spawn /usr/bin/ksh
send "main.exp\r"
expect $root_prompt
Both... (1 Reply)
Hi,
Have strange problem.
When I run an expect script towards a switch, it will not work.
$ ./test2
spawn ssh admin@sesafdd101
Password:
Last login: Thu Dec 25 13:20:54 2008 from 172.20.96.14
ECN430/330/212 Linux, based on Wind River Linux glibc_small (standard) 2.0
Trying... (1 Reply)
hi all, guys i have a problem in this code...
any help ?
#!/usr/bin/expect
if { $argc != 3 } {
puts "Usage:"
puts "$argv0 username oldpwd newpwd"
exit
}
#set machine
set username
set oldpwd
set newpwd
set completed_list " " (2 Replies)
This Expect script provides expect with a list of IP addresses to Cisco IPS sensors and commands to configure Cisco IPS sensors. The user, password, IP addresses, prompt regex, etc. have been anonymized. In general this script will log into the sensors and send commands successfully but there are... (1 Reply)
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... (4 Replies)
Hello to all...this is my first post (so please go easy). :)
I feel pretty solid at expect scripting, but I'm running into an issue that I'm not able to wrap my head around. I wrote a script that is a little advanced for logging into a remote Linux machine and changing text in a file using sed.... (2 Replies)
Hi,
I am facing a strange problem while executing a script from a solaris server. This script calls another one to execute "expect" commands on some other 40 servers (all AIX 5200). I am passing username and password to the "expect" script as arguments. My problem is that it is showing the... (4 Replies)