How do I use grep output in an expect script?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How do I use grep output in an expect script?
# 1  
Old 09-06-2014
How do I use grep output in an expect script?

Hi,

I am using expect to ssh to a remote host and run a program on the remote machine which has a variable runtime. I need to wait until it finishes so I can grab the output file of this program. I am trying to use the output of grep to know when the process finishes. I am trying to capture the PID and use it in a loop to determine when it's finished, like this:

Code:
set program "nameOfProgram"
set psVar "ps -ef | grep $program | grep -v grep | {awk '{ print $2 }'}"

expect "$PROMPT" {   
    send "pidVar=`$psVar`\r"
}

while {1} {

    sleep $waitTime
    expect {
	"$pidVar*$PROMPT" {
	    send "$psVar\r"
	}
	"$PROMPT" {
	    sleep 1
	    break
	}
    }
}


The behavior of this code is that '$pidVar' is only visible in the remote shell, not in my expect script. If I replace the while loop with 'interact', I can echo $pidVar but I can't seem to use it in the while loop.

I seem to be missing something fundamental. Any suggestions??

vagabond1964
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Redirect script output to file after grep

i have simple program that generate log file 1 line every sec, i need to do grep for specific record then redirect to another file. #!/bin/bash for i in `seq 1 20`; do echo $i sleep 1 done ./test.sh |egrep "5|10|15" 5 10 15 r ./test.sh... (2 Replies)
Discussion started by: before4
2 Replies

2. Shell Programming and Scripting

Capture output from expect script

Hi I am new to Expect scripting. I have to connect to a remote server and capture the output. Here I need output of " send "list registered\r"" to be stored in a file. but after execution, /tmp/capture.txt is of 0 byte #!/usr/bin/expect spawn ssh abc@10.10.10.10 -p 5022 expect... (2 Replies)
Discussion started by: bns928
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

Expect Script - Not Seeing Output from While Loop

I know something simple is missing here, "log_user 1" is set . . . after this utility opens ${InFile} (handle? for IntInFile) it needs to look for something to appear in the file ${IntInFile} and then send it to the spawned process. Then I am locking the file ${IntInFile} and clearing it out -... (0 Replies)
Discussion started by: JuanMatteo
0 Replies

5. Shell Programming and Scripting

Help capturing output of expect script

match_max 500000 set timeout 30 set outcome1 {} set outcome2 {} set inputfile C:\\Users\\Administrator\\Desktop\\inputfile.txt send -i $con "\r"; expect -i $con "Desktop>" { exp_send "type $inputfile \r" } set timeout 30 expect { "Desktop>" { set outcome $expect_out(0,string);}... (3 Replies)
Discussion started by: cityprince143
3 Replies

6. Shell Programming and Scripting

ksh script to process grep output

Hi, I would like to know how can i pipe the following output of grep into a predefined output format This is the output of the grep command grep record *.txt | sort -r 2010-04-28-11-12-21.txt:C The user has created a record 2010-04-29-10-18-41.txt:U The user has updated a record... (8 Replies)
Discussion started by: alienated
8 Replies

7. Shell Programming and Scripting

Expect script without user seeing output or input

I want a shell script to call an expect script but I want the expect script to run in the background so the user is not bothered with what is going on. Is there any way to do this? ---------- Post updated at 08:23 PM ---------- Previous update was at 07:39 PM ---------- got it it was ... (1 Reply)
Discussion started by: los21282
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

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

10. Shell Programming and Scripting

Expect - Interact output hangs when large output

Hello, I have a simple expect script I use to ssh to a workstation. I then pass control over to the user with interact. This script works fine on my HP and Mac, but on my Linux Desktop, I get a problem where the terminal hangs when ever I execute a command in the interact session that requires a... (0 Replies)
Discussion started by: natedog
0 Replies
Login or Register to Ask a Question
RECON(1)							     LAM TOOLS								  RECON(1)

NAME
recon - Check if LAM can be started. SYNTAX
recon [-abdhv] [<bhost>] OPTIONS
-a Report all host errors. -b Assume local and remote shell are the same. This means that only one remote shell invocation is used to each node. If -b is not used, two remote shell invocations are used to each node. -d Turn on debugging. -h Print the command help menu. -v Be verbose. DESCRIPTION
In order for LAM to be started on a remote UNIX machine, several requirements have to be fulfilled: 1) The machine must be reachable via the network. 2) The user must be able to remotely execute on the machine with the default remote shell program that was chosen when LAM was config- ured. This is usually rsh(1), but any remote shell program is acceptable (such as ssh(1), etc.). Note that remote host permission must be configured such that the remote shell program will not ask for a password when a command is invoked on remote host. 3) The remote user's shell must have a search path that will locate LAM executables. 4) The remote shell's startup file must not print anything to standard error when invoked non-interactively. If any of these requirements is not met for any machine declared in <bhost>, LAM will not be able to start. By running recon first, the user will be able to quickly identify and correct problems in the setup that would inhibit LAM from starting. The local machine where recon is invoked must be one of the machines specified in <bhost>. The <bhost> file is a LAM boot schema written in the host file syntax. See bhost(5). Instead of the command line, a boot schema can be specified in the LAMBHOST environment variable. Otherwise a default file, bhost.def, is used. LAM seaches for <bhost> first in the local directory and then in the installation directory under etc/. recon tests each machine defined in <bhost> by attempting to execute on it the tkill(1) command using its "pretend" option (no action is taken). This test, if successful, indicates that all the requirements listed above are met, and thus LAM can be started on the machine. If the attempt is successful, the next machine is checked. In case the attempt fails, a descriptive error message is displayed and recon stops unless the -a option is used, in which case recon continues checking the remaining machines. If recon takes a long time to finish successfully, this will be a good indication to the user that the LAM system to be started has slow communication links or heavily loaded machines, and it might be preferable to exclude or replace some of the machines in the system. Remote shell invocation Note that the default remote shell command can be overriden at invocation time with the LAMRSH environment variable. The LAMRSH environ- ment variable can be set with a new command and optional command line arguments. For example, the 1.x series of ssh clients require the -x flag to be specified to suppress standard ssh information from being sent to the standard error (which would cause recon to fail). For example (for the C shell and its derrivates): setenv LAMRSH "ssh -x" Normally, recon uses two remote shell invocations to each node. The first remote shell invocation is used to determine the user's shell on the remote node. The second remote shell invocation is used to launch the desired LAM binary on the remote node. If the -b switch is used, recon will assume that the user's shell on all remote nodes is the same as it is on the local node, and therefore only one remote shell invocation is used, which is noticably faster. In either case, on remote nodes, if the user's shell is not csh, tcsh, or bash, .profile is invoked by LAM before invoking any LAM binary. This allows the user to setup paths and any necessary environment before LAM binaries are invoked (csh and tcsh users can put such setup in their $HOME/.cshrc or $HOME/.tcshrc files; bash users can put this setup in their $HOME/.bashrc file). FILES
$LAMHOME/etc/lam-bhost.def default boot schema file EXAMPLES
recon -v mynodes Check if LAM can be started on all the UNIX machines described in the boot schema mynodes. Report about important steps as they are done. recon -v -a Check if LAM can be started on all the UNIX machines described in the default boot schema. Report about important steps as they are done. Check all the machines; do not stop after the first error message. SEE ALSO
rsh(1), tkill(1), bhost(5), lamboot(1), wipe(1), lam-helpfile(5) LAM 6.5.8 November, 2002 RECON(1)