Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Expect "interact" fails when called from another script Post 302394516 by treesloth on Thursday 11th of February 2010 04:50:50 PM
Old 02-11-2010
Expect "interact" fails when called from another script

So, I have an expect script (let's call it expect.exp) that takes 3 arguments. It logs into a remote server, runs a set of commands, then hands control over to the user by the "interact" command. If I call this script from the command line, it works properly.

Now I'd like to apply this script to several servers-- log in, view the automated command output, interact as needed, log out, and get jumped straight to the next server. The reasonable approach, it seems, is to create a file that has the parameters in some nice format, like CSV, then use a wrapper to call the nice, proven expect script... something like:

Code:
while read LINE; do
     (assign each field of the line to a variable; say opt1, opt2, opt3)
     ./expect.exp opt1 opt2 opt3
done

I would expect this to log on, run the automated commands, hand me control, and wait for me to log off; then, once I've logged off that particular server, it would automatically log me onto the next one, run the automated commands, hand over control... you get the idea... until the list is finished. Instead, it logs on to the first server, runs the commands, apparently logs off, and drops me back to a prompt on the server I'm running this from. Only the first line of inputs is used. Why is that? This seems straightforward enough, but apparently it isn't. I'd like to understand this behavior and see how to fix it.

Last edited by treesloth; 02-11-2010 at 06:00 PM..
 

10 More Discussions You Might Find Interesting

1. HP-UX

Shell Script fails with "can't connect to client"

Hi Unix Gurus, I have written a shell script to unfreeze all frozen media in NetBackup. Here is the script written on HP-UX using ksh: *********************************************** set -x cd $HOME rm -f frozentest rm -f mediaserver cd /usr/openv/netbackup/bin/admincmd pbrun... (2 Replies)
Discussion started by: sseenu79
2 Replies

2. UNIX for Dummies Questions & Answers

#!/bin/sh script fails at StringA | tr "[x]" "[y]"

I need to take a string (stringA) check it for spaces and replace any spaces found with an equal (=) sign. This is not working. There are spaces between each component: $StringA | tr "" "" The error returned is: test: Specify a parameter with this command Can you help? (3 Replies)
Discussion started by: by_tg
3 Replies

3. Windows & DOS: Issues & Discussions

Samba (SMB) client fails: "Called name not present"

Hi, I issue smbclient on a Linux REd hat server : smbclient -L ***.16.0.42 -U domaine/Administrator Password: Domain= OS= Server= Domain= OS= Server= Sharename Type Comment --------- ---- ------- IPC$ IPC IPC distant ... (0 Replies)
Discussion started by: big123456
0 Replies

4. UNIX for Advanced & Expert Users

All alias in .profile lost when "script" command is called

Hi, I was trying to call "script <an ip add>" command from .profile file to log everything whenever anyone logs in to this user. I did the following at the end of .profile. 1) Extracted the IP address who logged in 2) Called script < ip add> . The problem I am facing is all, aliases etc. written... (3 Replies)
Discussion started by: amicon007
3 Replies

5. UNIX for Dummies Questions & Answers

Problems with "exit" called from function in bourne script

Hi everyone. #!/sbin/sh EXITING() { umount /FOLDER rm -Rf /FOLDER echo "EXIT" exit 0 } EXITING echo "OK" (8 Replies)
Discussion started by: vacadepollo
8 Replies

6. Shell Programming and Scripting

Expect Scripting - Using the "interact" command?

Hello All, I am writing an Expect Script to execute some commands over ssh then exit the script. The script works just fine if I automate everything and assuming the correct password was entered. So this Expect Script gets executed from a Bash script... From the Bash script I pass along an... (0 Replies)
Discussion started by: mrm5102
0 Replies

7. Shell Programming and Scripting

Bash script fails with "function: not found" error

Hello everyone, I am having problems figuring this out. This script below is supposed to create a list of file names with their "md5sum", in a file "lib-list.txt" When I run it "sh component-list.sh " I get this:component-list.sh: 4: component-list.sh: function: not found component-list.sh:... (4 Replies)
Discussion started by: joemb
4 Replies

8. Shell Programming and Scripting

Can someone please show me a very simple "expect" script to change password in Solaris please?

Ladies & Gents, Can one of you gurus please show me a very simple "expect" script to change the password in Solaris in a script, please? Nothing fancy, no error checking, no nothing. Just to change the password of a new user, it's all. Many thanks in advance. U guys have honestly earned my... (1 Reply)
Discussion started by: Hiroshi
1 Replies

9. Shell Programming and Scripting

Expect: spawn id exp5 not open while executing "expect "$" { send "sudo su -\r" }"

Hi All, i am trying to ssh to a remote machine and execute certain command to remote machine through script. i am able to ssh but after its getting hung at the promt and after pressing ctrl +d i am gettin the out put as expect: spawn id exp5 not open while executing "expect "$" {... (3 Replies)
Discussion started by: Siddharth shivh
3 Replies

10. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
KIBITZ(1)						      General Commands Manual							 KIBITZ(1)

NAME
kibitz - allow two people to interact with one shell SYNOPSIS
kibitz [ kibitz-args ] user [ program program-args... ] kibitz [ kibitz-args ] user@host [ program program-args... ] INTRODUCTION
kibitz allows two (or more) people to interact with one shell (or any arbitrary program). Uses include: o A novice user can ask an expert user for help. Using kibitz, the expert can see what the user is doing, and offer advice or show how to do it right. o By running kibitz and then starting a full-screen editor, people may carry out a conversation, retaining the ability to scroll backwards, save the entire conversation, or even edit it while in progress. o People can team up on games, document editing, or other cooperative tasks where each person has strengths and weaknesses that complement one another. USAGE
To start kibitz, user1 runs kibitz with the argument of the user to kibitz. For example: kibitz user2 kibitz starts a new shell (or another program, if given on the command line), while prompting user2 to run kibitz. If user2 runs kibitz as directed, the keystrokes of both users become the input of the shell. Similarly, both users receive the output from the shell. To terminate kibitz it suffices to terminate the shell itself. For example, if either user types ^D (and the shell accepts this to be EOF), the shell terminates followed by kibitz. Normally, all characters are passed uninterpreted. However, if the escape character (described when kibitz starts) is issued, the user may talk directly to the kibitz interpreter. Any Expect(1) or Tcl(3) commands may be given. Also, job control may be used while in the inter- preter, to, for example, suspend or restart kibitz. Various processes can provide various effects. For example, you can emulate a two-way write(1) session with the command: kibitz user2 sleep 1000000 ARGUMENTS
kibitz takes arguments, these should also be separated by whitespace. The -noproc flag runs kibitz with no process underneath. Characters are passed to the other kibitz. This is particularly useful for con- necting multiple interactive processes together. In this mode, characters are not echoed back to the typist. -noescape disables the escape character. -escape char sets the escape character. The default escape character is ^]. -silent turns off informational messages describing what kibitz is doing to initiate a connection. -tty ttyname defines the tty to which the invitation should be sent. If you start kibitz to user2 on a remote computer, kibitz performs a rlogin to the remote computer with your current username. The flag -proxy username causes rlogin to use username for the remote login (e.g. if your account on the remote computer has a different username). If the -proxy flag is not given, kibitz tries to determine your current username by (in that order) inspecting the environment variables USER and LOGNAME, then by using the commands whoami and logname. The arguments -noescape and -escape can also be given by user2 when prompted to run kibitz. MORE THAN TWO USERS
The current implementation of kibitz explicitly understands only two users, however, it is nonetheless possible to have a three (or more) -way kibitz, by kibitzing another kibitz. For example, the following command runs kibitz with the current user, user2, and user3: % kibitz user2 kibitz user3 Additional users may be added by simply appending more "kibitz user" commands. The xkibitz script is similar to kibitz but supports the ability to add additional users (and drop them) dynamically. CAVEATS
kibitz assumes the 2nd user has the same terminal type and size as the 1st user. If this assumption is incorrect, graphical programs may display oddly. kibitz handles character graphics, but cannot handle bitmapped graphics. Thus, % xterm -e kibitz will work % kibitz xterm will not work However, you can get the effect of the latter command by using xkibitz (see SEE ALSO below). kibitz uses the same permissions as used by rlogin, rsh, etc. Thus, you can only kibitz to users at hosts for which you can rlogin. Similarly, kibitz will prompt for a password on the remote host if rlogin would. If you kibitz to users at remote hosts, kibitz needs to distinguish your prompt from other things that may precede it during login. (Ide- ally, the end of it is preferred but any part should suffice.) If you have an unusual prompt, set the environment variable EXPECT_PROMPT to an egrep(1)-style regular expression. Brackets should be preceded with one backslash in ranges, and three backslashes for literal brackets. The default prompt r.e. is "($|%|#) ". kibitz requires the kibitz program on both hosts. kibitz requires expect(1). By comparison, the xkibitz script uses the X authorization mechanism for inter-host communication so it does not need to login, recognize your prompt, or require kibitz on the remote host. It does however need permission to access the other X servers. BUGS
An early version of Sun's tmpfs had a bug in it that causes kibitz to blow up. If kibitz reports "error flushing ...: Is a directory" ask Sun for patch #100174. If your Expect is not compiled with multiple-process support (i.e., you do not have a working select or poll), you will not be able to run kibitz. ENVIRONMENT
The environment variable SHELL is used to determine the shell to start, if no other program is given on the command line. If the environment variable EXPECT_PROMPT exists, it is taken as a regular expression which matches the end of your login prompt (but does not otherwise occur while logging in). See also CAVEATS above. If the environment variables USER or LOGNAME are defined, they are used to determine the current user name for a kibitz to a remote com- puter. See description of the -proxy option in ARGUMENTS above. SEE ALSO
Tcl(3), libexpect(3), xkibitz(1) "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don Libes, O'Reilly and Associates, January 1995. "Kibitz - Connecting Multiple Interactive Programs Together", by Don Libes, Software - Practice & Experience, John Wiley & Sons, West Sus- sex, England, Vol. 23, No. 5, May, 1993. AUTHOR
Don Libes, National Institute of Standards and Technology kibitz is in the public domain. NIST and I would appreciate credit if this program or parts of it are used. 19 October 1994 KIBITZ(1)
All times are GMT -4. The time now is 02:10 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy