04-10-2008
Need help with Expect and Shell script
This is my shell script which calls an expect file, i am trying to find out server.log file sizes on various servers. But what should be correct way to do that, is there any way i can run a for loop inside the expect file which can take cat <filename> as input. I know for can be used in expect file using counters but i need the content of file as input in in for loop.
---------------------------------------------------------------------
echo "Please enter your id: "
read uid
stty -echo
echo "Enter your password: "
read pass
stty echo
#loop into different boxes
for i in server1 server2 server3 server4 server5
do
#Check for the log file/clear it if there
if [ -f ~/tmp2.log ]
then
cp /dev/null ~/tmp2.log
fi
#this passes the userid pass and the servername to the expect file
expect find_server_logs.exp $i $uid $pass
#the tmp.log file contains the path of server.log file on various paths
#can this be executed within the expect file, or is there any better way to write the expect in the shell script itself.
for x in `cat ~/tmp.log`
do
# ls -l will take one input at a time from the file tmp.log and show its size
ls -l $x >> ~/tmp2.log
done
echo
echo "Hostname : $i"
echo
cat ~/tmp2.log | sort +4nr
done
________________________________________________________
#!/usr/bin/expect -f
spawn ssh [lindex $argv 1]@[lindex $argv 0] find /apps/logs/sunone -name server.log > ~/tmp.log
expect "[lindex $argv 1]@[lindex $argv 0]'s password:"
send "[lindex $argv 2]\r"
interact
*******************************
now the thing is i want the ls -l $x command to run on the various servers but fot that i have to take the inut for $x from the tmp.log file (cat tmp.log) is that possible or if there is any better way.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi All,
Has anyone used expect script in a shell script or vice versa. I have a script which would ssh and scp to other machines. I need to use expect script so that user does not have to enter the password everytime ssh/scp command is executed.
The script is as below. I need to pass the... (0 Replies)
Discussion started by: nua7
0 Replies
2. Shell Programming and Scripting
I am trying to write a shell script that launches an expect script and then use results of the expect script in the rest of the shell script.
The expect script is connecting to a remote host and looking up certian user info like UID and home directory. This part is working
I then want the... (2 Replies)
Discussion started by: kaltekar
2 Replies
3. Shell Programming and Scripting
Hi I have written one shell script , using that i am able to connect to remote machine but i have to
#!/usr/bin/expect -f
set address
set username
set password
set OOLpath
set dbusername
set dbpasswd
set tnsname
set recdbusername
set recdbpasswd
set rectnsname
spawn ssh... (1 Reply)
Discussion started by: mnmonu
1 Replies
4. Shell Programming and Scripting
I have the code like this :
shell script continues ...
....
expect -c"
spawn telnet $ip
expect "login:"
send \"$usrname\r\"
expect "Password:"
send \"$passwd\r\"
expect "*\>"
send \"$cmdstr\r\"
... (1 Reply)
Discussion started by: robbiezr
1 Replies
5. Programming
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
6. Shell Programming and Scripting
Hi there,
I need some help regarding the execution of shell script from expect as the method I am trying is giving me error. I wrote an shell program which takes two arguments to telnet to a device and saves the output in a file. Following is the script.... (0 Replies)
Discussion started by: cyberparanoid
0 Replies
7. Shell Programming and Scripting
Hi All,
I have a expect script which is working for single server, but if i am trying to pass value of the variable inside expect, it is not working. Please see below :-
expect -c 'spawn ssh username@ip_address ; expect assword ; send "Password1\n" ; send "uptime \n" ; send "free -m \n" ;... (0 Replies)
Discussion started by: Renjesh
0 Replies
8. Shell Programming and Scripting
Dear friends,
Could you please help me in writing a sample code to connect the remote system (through ssh) using expect in shell script.
Thanks in advance.. :-) (1 Reply)
Discussion started by: rajesh.tulluri
1 Replies
9. Shell Programming and Scripting
Shell Scipt: temp.sh
su - <$username>
expect pass.exp
Expect script: pass.exp
#!/usr/bin/expect -f
# Login
#######################
expect "Password: " send "<$password>\r"
it comes up with Password: but doesnt take password passed throguh file. (2 Replies)
Discussion started by: bhavesh.sapra
2 Replies
10. Shell Programming and Scripting
Hi I have two scripts one is Expect and other is shell.
I want to merge Expect code in to Shell script so that i can run it using only one script. Can somebody help me out ?
Order to execute: Run Expect_install.sh first and then when installation completes run runTests.sh shell script.
... (1 Reply)
Discussion started by: ashish_neekhra
1 Replies
LEARN ABOUT CENTOS
unbuffer
UNBUFFER(1) General Commands Manual UNBUFFER(1)
NAME
unbuffer - unbuffer output
SYNOPSIS
unbuffer program [ args ]
INTRODUCTION
unbuffer disables the output buffering that occurs when program output is redirected from non-interactive programs. For example, suppose
you are watching the output from a fifo by running it through od and then more.
od -c /tmp/fifo | more
You will not see anything until a full page of output has been produced.
You can disable this automatic buffering as follows:
unbuffer od -c /tmp/fifo | more
Normally, unbuffer does not read from stdin. This simplifies use of unbuffer in some situations. To use unbuffer in a pipeline, use the
-p flag. Example:
process1 | unbuffer -p process2 | process3
CAVEATS
unbuffer -p may appear to work incorrectly if a process feeding input to unbuffer exits. Consider:
process1 | unbuffer -p process2 | process3
If process1 exits, process2 may not yet have finished. It is impossible for unbuffer to know long to wait for process2 and process2 may
not ever finish, for example, if it is a filter. For expediency, unbuffer simply exits when it encounters an EOF from either its input or
process2.
In order to have a version of unbuffer that worked in all situations, an oracle would be necessary. If you want an application-specific
solution, workarounds or hand-coded Expect may be more suitable. For example, the following example shows how to allow grep to finish pro-
cessing when the cat before it finishes first. Using cat to feed grep would never require unbuffer in real life. It is merely a place-
holder for some imaginary process that may or may not finish. Similarly, the final cat at the end of the pipeline is also a placeholder
for another process.
$ cat /tmp/abcdef.log | grep abc | cat
abcdef
xxxabc defxxx
$ cat /tmp/abcdef.log | unbuffer grep abc | cat
$ (cat /tmp/abcdef.log ; sleep 1) | unbuffer grep abc | cat
abcdef
xxxabc defxxx
$
BUGS
The man page is longer than the program.
SEE ALSO
"Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don Libes, O'Reilly and Associates, January 1995.
AUTHOR
Don Libes, National Institute of Standards and Technology
1 June 1994 UNBUFFER(1)