How to return value from expect script?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to return value from expect script?
# 1  
Old 12-21-2011
How to return value from expect script?

Hi there.
There is a shell script:
Code:
#!/bin/bash 
ARGS=`(grep -i $1 old.txt || grep -i $1 new.txt) |awk 'BEGIN {FS=","}{print "\x27" $5 "\x27"}' | tr "\n" " "` 
/usr/bin/expect -- << EXPECTEND 
spawn -noecho myssh myhost.localnet 
log_user 0 
expect root 
log_user 1 
send "/home/one.pl $ARGS\r" 
set val $expect_out(buffer) 
send_user "$val" 
#expect eof 
EXPECTEND

This does not works.
When i commented out line before last, i saw required output, but script executed 10 secs longer, i guess "expect eof" force script to wait for some timeout. However $val is still empty, i just see output of send "/home/one.pl $ARGS\r"
Pls advise how to pass variable from expect to bash without waiting?
# 2  
Old 12-21-2011
I'm not familiar with myssh, but if it works like ssh, something like this may work:

Code:
val=$(
  myssh root@myhost.localnet "/home/one.pl $ARGS"
  )

What I mean is I'm not sure if you need expect in this case.
# 3  
Old 12-21-2011
It is our company's ssh client. I dont have its sources, but it acceps only one input arg as hostname.
# 4  
Old 12-21-2011
Could it be a bash script ?
OK, if you really need to use expect, you may try something like this:

Code:
/usr/bin/expect -- << EXPECTEND 
spawn -noecho myssh myhost.localnet 
log_user 0 
expect root
expect "your_exact_prompt_string_here_including_the_trailing_space" 
log_user 1 
send "/home/one.pl $ARGS\r" 
expect "your_exact_prompt_string_here_including_the_trailing_space" 
send "logout\r"
EXPECTEND

# 5  
Old 12-21-2011
try like this
Code:
#!/bin/bash
ARGS=`(grep -i $1 old.txt || grep -i $1 new.txt) |awk 'BEGIN {FS=","}{print "\x27" $5 "\x27"}' | tr "\n" " "`
PASSWD="$(/home/one.pl $ARGS)"
VAL=$(/usr/bin/expect -- << EXPECTEND
spawn -noecho myssh myhost.localnet
log_user 0
expect root
log_user 1
send "$PASSWD\r"
expect -re " $"
set val $expect_out(buffer)
send_user "$val"
send "exit\r"
close
EXPECTEND);echo "$VAL"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Return: can only `return' from a function or sourced script

Not sure where the problem is. I can run the script without any issue using the following command. . /opt/app/scripts/cdc_migration.sh But it fails with the below error when I try it this way /opt/app/scripts/cdc_migration.sh /opt/app/scripts/cdc_migration.sh: line 65: return: can only... (1 Reply)
Discussion started by: svajhala
1 Replies

2. UNIX for Beginners Questions & Answers

Expect return code

Hello everyone Can some help me with understand return code in expect #!/usr/bin/expect set timeout 1 set SRV set user set pw spawn ssh $user@$SRV expect { "(yes/no)? " { send "yes\r" ; exp_continue } "assword: " { send "$pw\r" ; exp_continue } eof }... (2 Replies)
Discussion started by: vikus
2 Replies

3. 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

4. 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

5. Shell Programming and Scripting

Expect in bash to get the return value

cat test.sh #!/bin/sh expect <<- EOF set timeout 5 spawn ssh -o StrictHostKeyChecking=no lyang0@128.224.178.245 -C mkdir -p /tmp expect { "Password:" {send "root\r"} } spawn scp -o StrictHostKeyChecking=no /tmp/1 lyang0@128.224.178.245:/tmp/ ... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

6. 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

7. 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

8. 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

9. 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

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