How to end Expect script?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to end Expect script?
# 8  
Old 06-30-2011
I tried the following:

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

set timeout -1

##
## START OF SCRIPT
##

### SSH to remote server
spawn ssh root@myserver
expect "*?assword:*"
... (code removed) ...

### perform operation
... (code removed) ...

### logout
send -- "logout\r"
... (code removed) ...

### now at parent shell, do a SCP
spawn scp root@myserver:/path/to/file/somefile.tar .
expect "*?password"
... (code removed) ...


### SCP done, now need to exit
expect eof

A few questions. I'm new to Expect. When I ran the script w/o the second spawn on scp, it gave me this error:

Code:
send: spawn id exp5 not open
    while executing
"exp_send -s -- $arg"
    (procedure "send" line 3)
    invoked from within
"send -- "mypassword\r""
    (file "./geturtserv.exp" line 123)

So, I added spawn in front of it. How should I do it instead?

Now, with this script, at the command prompt, whatever I type doesn't appear. For example, I type "ls" but it doesn't show. However if I hit enter, it runs "ls". To get out of it, I have to do ctrl-d.

Now that I'm using spawn, how should I properly end the Expect script? Thanks.
# 9  
Old 06-30-2011
Code:
send -- "logout\r"

Why \r? why not \n? If you're talking to a UNIX shell it expects \n
# 10  
Old 06-30-2011
The main part of the script (ssh, logout, scp etc.) came from using autoexpect. The actual operations after ssh etc. are what I wrote.

I believe \r is correct from what I have read. Also autoexpect recorded \r as well.

The "logout\r" portion works. scp works as well as I go get the tar file from the remote server. It is only after that, I'm not sure how to properly end/exit from running the script manually vs calling it from a cron job.
# 11  
Old 06-30-2011
the suggestion's been made in this thread many times. Send one more thing to the shell, 'exit'.
# 12  
Old 06-30-2011
Sorry, I'm not understanding it.

Quote:
you need to send exit to the shell or directly spawn ssh
The advice was to either send "exit" OR directly spawn ssh and the advice was to take the second route. So, I'm using spawn instead, but I'm still not getting my prompt back.
# 13  
Old 06-30-2011
This code works for me:

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

set timeout -1
set password "a_password"

### SSH to remote server
spawn ssh root@localhost
expect "*assword:*"
send "$password\r"

### logout
send  "logout\r"

### now at parent shell, do a SCP
spawn scp root@localhost:/home/dd/.histfile /tmp
expect "*assword:*"
send "$password\r"


### SCP done, now need to exit
expect eof

Please try to run the script with:

Code:
expect -d ./script_name

... and post the output.
# 14  
Old 06-30-2011
Thanks for the suggestion. I tried it again and it works (exits). I executed it previously using ./myscript.exp but I tried it again and it worked as well. I'm not entirely sure what happened before. Most likely operator error Smilie

Thanks again all for your help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Expect script returning string following a found expect.

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)
Discussion started by: IBGaryA
0 Replies

2. Shell Programming and Scripting

SFTP or scp with password in a batch script without using SSH keys and expect script

Dear All, I have a requirement where I have to SFTP or SCP a file in a batch script. Unfortunately, the destination server setup is such that it doesn't allow for shell command line login. So, I am not able to set up SSH keys. My source server is having issues with Expect. So, unable to use... (5 Replies)
Discussion started by: ss112233
5 Replies

3. Programming

Calling another expect script inside an expect script

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)
Discussion started by: brettski
1 Replies

4. Programming

Calling expect script inside another expect

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)
Discussion started by: Priya Amaresh
1 Replies

5. Shell Programming and Scripting

Expect script help needed- script failing if router unavailable

Hey all. Sometimes I'm tasked to change some router configs for the entire network (over 3,000 Cisco routers). Most of the time its a global config parameter so its done with a loop and an IP list as its the same configuration change for all routers. This is working OK. However, sometimes an... (3 Replies)
Discussion started by: mrkz1974
3 Replies

6. Programming

Expect script to run a Shell script on remote server

Hi All, I am using a expect script to run a shell script on remote server, the code is as follows. But the problem is that it executes only first command, and hangs it doesn't run the next commands. spawn ssh $uid@$host expect "password:" send "$password\r" expect "*\r" send... (2 Replies)
Discussion started by: yashwanthsn
2 Replies

7. Shell Programming and Scripting

Use of Begin IF ,END IF END not working in the sql script

Hi I have written a script .The script runs properly if i write sql queries .But if i use PLSQL commands of BEGIN if end if , end ,then on running the script the comamds are getting printed on the prompt . Ex :temp.sql After connecting to the databse at the sql prompt i type... (1 Reply)
Discussion started by: isha_1
1 Replies

8. Shell Programming and Scripting

Need help with Expect script for Cisco IPS Sensors, Expect sleep and quoting

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)
Discussion started by: genewolfe
1 Replies

9. Shell Programming and Scripting

Expect Script - No End

Hi folks, Im new on expect. I'd like to develop an expcet script which copies a file to a host trough scp and after that the script makes an ssh to the specified host and executes the file. Currently I have the following Script: #!/usr/bin/expect -f set password set ipaddr set... (1 Reply)
Discussion started by: domi55
1 Replies

10. Shell Programming and Scripting

strange expect script behavior, or am i misunderstanding expect scripting?

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)
Discussion started by: v1k0d3n
2 Replies
Login or Register to Ask a Question