04-16-2008
you can't mix both expect & ksh in same script. write two 2 scripts one reads the hostfile and sends instance,host, password to expect scripts. which does your job. here is the sample. this might not work as i did try to explain. good luck let me know how it goes.
cat yourscript.sh
#!/bin/ksh
echo "please enter the instance"
read instance
set ##password to be entered right before the script is run##
##/usr/local/bin/expect<<-EOF
cat serverlist.txt | while read host;
do
/usr/lib/some_expect.sh $instance $host $password
done
cat /usr/lib/some_expect.sh
#!/usr/local/bin/expect--
spawn ssh -p 2222 $1@$2 $3 # $1 -- Instance $2-- Host $3-- Password
sleep 1
expect "*Password:*"
sleep 1
send "$1\r"
expect "*/export/home/a61359>#*"
send "/usr/local/bin/top -d 2 >> tempfile.txt\r"
expect "*/export/home/a61359>#*"
send "uuencode tempfile.txt tempfile.txt | mailx -s '$host'
myemail@mycompany.com\r"
sleep 1
expect "*/export/home/a61359>#*"
sleep 1
send "rm tempfile.txt\r"
sleep 1
expect "*/export/home/a61359>#*"
sleep 1
send "exit\r"
expect eof
10 More Discussions You Might Find Interesting
1. Shell Programming and 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
2. Shell Programming and Scripting
This is my expect script .
set USERNAME
set PASSWD
set IP
set timeout 15
spawn telnet $IP
expect "login:"
send "$USERNAME\r"
expect "Password:"
send "$PASSWD\r"
expect "Password:"
send "$PASSWD\r"
expect "*\>"
send "show version\r"
expect "*\>"
send "quit\r"
ouput of it (0 Replies)
Discussion started by: robbiezr
0 Replies
3. Solaris
Hi Experts,
I am learning expect and wrote the below script for automatic sftp into a server:
#!/usr/local/bin/expect -f -d
spawn sftp -v test@mumux503 # logs into mumux503 as test user
expect "password:"
sleep 20
send "test\r"; # sending the password for test... (3 Replies)
Discussion started by: Hari_Ganesh
3 Replies
4. Shell Programming and Scripting
Hi Gurus,I am trying to automate SFTP using expect.I have written a script that logs into a few boxes(one after the other) and pulls a few files from them.The code:#!/bin/kshcat serverlist.conf|wc -l >> tmp #serverlist.conf contains the list of servers.tmp1=$tmpfor tmp1 in listdo while read... (3 Replies)
Discussion started by: Hari_Ganesh
3 Replies
5. Shell Programming and Scripting
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
6. Shell Programming and Scripting
Hi experts
I know the expect script can match the terminal output to run the the following cmd
I write a script with expect named "test", I want to run ten "test" with background running,
for ((i=1;i<=10;i++)
do
./test -n $i
done
I find all the output of test will print on one... (0 Replies)
Discussion started by: yanglei_fage
0 Replies
7. Shell Programming and Scripting
Hi,
I am trying to create an ssh script to login to cisco routers and activate/deactivate bgp neighbors if they match certain conditions. I dont think my "if" and "foreach" are working correctly. Any help is appreciated. Below is my script:
... (0 Replies)
Discussion started by: blahblahsomeone
0 Replies
8. Shell Programming and Scripting
Hi All,
I have the problem to run the commands in expect script from shell script.
Mentioned below is the shell and expect script.
##Shell Script##
cat bscfile.txt | while read line
do
NODE=$line
./expect.sh $line $NAME
done
line= 1st input
NAME=2nd input... (1 Reply)
Discussion started by: yadvinder_singh
1 Replies
9. Programming
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
10. UNIX for Beginners Questions & Answers
Hi; problem may be obvious, simple but I have to say it is somehow not easy to locate the issue.
I am doing some word extracting from multiline text.
Interacting in CLI seems to work without issues. First step is to add multiline text to a variable.
expect1.1>
expect1.1> set... (2 Replies)
Discussion started by: aldowski
2 Replies
LEARN ABOUT DEBIAN
test::expect
Test::Expect(3pm) User Contributed Perl Documentation Test::Expect(3pm)
NAME
Test::Expect - Automated driving and testing of terminal-based programs
SYNOPSIS
# in a t/*.t file:
use Test::Expect;
use Test::More tests => 13;
expect_run(
command => "perl testme.pl",
prompt => 'testme: ',
quit => 'quit',
);
expect("ping", "pong", "expect");
expect_send("ping", "expect_send");
expect_is("* Hi there, to testme", "expect_is");
expect_like(qr/Hi there, to testme/, "expect_like");
DESCRIPTION
Test::Expect is a module for automated driving and testing of terminal-based programs. It is handy for testing interactive programs which
have a prompt, and is based on the same concepts as the Tcl Expect tool. As in Expect::Simple, the Expect object is made available for
tweaking.
Test::Expect is intended for use in a test script.
SUBROUTINES
expect_run
The expect_run subroutine sets up Test::Expect. You must pass in the interactive program to run, what the prompt of the program is, and
which command quits the program:
expect_run(
command => "perl testme.pl",
prompt => 'testme: ',
quit => 'quit',
);
expect
The expect subroutine is the catch all subroutine. You pass in the command, the expected output of the subroutine and an optional comment.
expect("ping", "pong", "expect");
expect_send
The expect_send subroutine sends a command to the program. You pass in the command and an optional comment.
expect_send("ping", "expect_send");
expect_is
The expect_is subroutine tests the output of the program like Test::More's is. It has an optional comment:
expect_is("* Hi there, to testme", "expect_is");
expect_like
The expect_like subroutine tests the output of the program like Test::More's like. It has an optional comment:
expect_like(qr/Hi there, to testme/, "expect_like");
expect_handle
This returns the Expect object.
expect_quit
Closes the Expect handle.
SEE ALSO
Expect, Expect::Simple.
AUTHOR
Leon Brocard, "<acme@astray.com>"
COPYRIGHT
Copyright (C) 2005, Leon Brocard
This module is free software; you can redistribute it or modify it under the same terms as Perl itself.
perl v5.12.3 2011-06-12 Test::Expect(3pm)