Sponsored Content
Top Forums Shell Programming and Scripting How to use 'expect' to pass UID & Password to a "for loop" in shell script? Post 302875473 by Chubler_XL on Tuesday 19th of November 2013 03:14:33 PM
Old 11-19-2013
Yes the output you have highlighted in red is the problem, as you pointed out the PS1 change is getting lost. Most likely because it is being sent too early and the login process is clearing input buffers.

Please read the first 3 paragraphs of post #13 again, here I give some clues about possible causes of this, and a propose increasing the timeout to assist debugging:

Code:
#!/usr/bin/expect -f
set timeout 25
set u "souvikm"
set p "pass^123"
set command "oslevel -s"

# Open server_list for read (handle hosts) and config_details for write (handle config)
set hosts [open server_list r]
set config [open config_details w]

# This like turns off local echo -
# for debugging leave it commented and all output will be echoed
#log_user 0

# Loop through each host in the $hosts file

while {[gets $hosts host] >= 0} {
    spawn -noecho ssh -t $u@$host
    expect "?assword:*"
    send -- "$p\r"

    # Wait for original server side prompt
    expect -re "(%|#|>|\$) *$"

    # Change server side prompt to make matching more reliable
    send "PS1='PROMPT# '\r"

    # Wait for new prompt
    expect -re "PROMPT# '(.*)PROMPT# "

    # Execute command
    send "$command\r"

    # Match command output and prompt
    expect -re "\r\n(.*)\r\n(.*)PROMPT# "

    # Load command output into variable output
    set output $expect_out(1,string)

    # Append output into (and host name) to local logfile
    puts $config "$host: $output\r"

    # Send exit to host and wait for connection to close
    send "exit\r"
    expect eof
}
close $hosts
close $config

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

shell script & sqlplus "plzz help"

hi friends, i m tryin to load data from one set of table to other i have sql procedure al ready for it..! i m going to load the procedure only if data in one of my table for example table "landing " have 10 records each attribute of this table is file_name status date ... (2 Replies)
Discussion started by: kulbir
2 Replies

2. Shell Programming and Scripting

How to include RETURN KEY with Background process "&" in Shell Script

Hello All, I am a newbie in Shell script programming, and maybe you can help me with my query. I need to write a shell script (mntServer.ksh) that will start a background process and also to be able to run another script. The mntServer.ksh script contains: #!/bin/ksh... (1 Reply)
Discussion started by: racbern
1 Replies

3. Shell Programming and Scripting

ssh through "expect" in shell script

Hi, I am trying to use "Expect" in shell script to ssh and do some work in remote server but I am unable to connect. Here is the code I am using. #save as test.sh set ip "10.10.10.10" set username "uname" set password "upass" spawn ssh $username@$ip expect "Password:" send... (8 Replies)
Discussion started by: shekhar2010us
8 Replies

4. Red Hat

files having Script which works behind "who" & "w" commands

Dear All, plz print the path of files which have the script of "who" & "w" commands. thnx in advance. (6 Replies)
Discussion started by: saqlain.bashir
6 Replies

5. Shell Programming and Scripting

Passing username and password to a script running inside "expect" script

Hi I'm trying to run a script " abc.sh" which triggers "use.sh" . abc.sh is nothing but a "expect" script which provides username and password automatically to the use.sh script. Please find below the scripts: #abc.sh #!/usr/bin/expect -f exec /root/use.sh expect "*name*" send... (1 Reply)
Discussion started by: baddykam
1 Replies

6. Shell Programming and Scripting

Shell script using expect to login to couple of remote servers and read "crontab -l"

I need a shell script using expect to login to couple of remote servers and read "crontab -l -u <username>" & "cat /etc/rc.local" & "df -h" and able to create output into a file saved locally with hostname.crontab & hostname.rc.local & disk.status. I can supply a file as list of hostname or IP... (4 Replies)
Discussion started by: jaipsharma
4 Replies

7. AIX

How to use 'expect' to pass UID & Password to a "for loop" in shell script?

Friends, Need someone's help in helping me with the below requirement for a script: > For a list of servers(over 100+), I need to login into each of them(cannot configure password-less ssh) & grab few configuration details < I know, this is possible through expect programming in a simple... (2 Replies)
Discussion started by: thisissouvik
2 Replies

8. Shell Programming and Scripting

How to pass password to "su account" in script?

Hi, I need to run a test script to check all test accounts, is it possible to pass the password to su in following command? I've got following error: $ echo "${password}" | su ${test_account} -c "check_account.sh" standard in must be a tty Thank you. - j (3 Replies)
Discussion started by: hce
3 Replies

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

10. 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
pssh(1) 						      General Commands Manual							   pssh(1)

NAME
pssh -- parallel ssh program SYNOPSIS
pssh [-vAiIP] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] command ... pssh -I [-vAiIP] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [command ...] DESCRIPTION
pssh is a program for executing ssh in parallel on a number of hosts. It provides features such as sending input to all of the processes, passing a password to ssh, saving output to files, and timing out. OPTIONS
-h host_file --hosts host_file Read hosts from the given host_file. Lines in the host file are of the form [user@]host[:port] and can include blank lines and com- ments (lines beginning with "#"). If multiple host files are given (the -h option is used more than once), then pssh behaves as though these files were concatenated together. If a host is specified specified multiple times, then pssh will connect the given number of times. -H [user@]host[:port] --host [user@]host[:port] -H "[user@]host[:port] [ [user@]host[:port ] ... ]" --host "[user@]host[:port] [ [user@]host[:port ] ... ]" Add the given host strings to the list of hosts. This option may be given multiple times, and may be used in conjunction with the -h option. -l user --user user Use the given username as the default for any host entries that don't specifically specify a user. -p parallelism --par parallelism Use the given number as the maximum number of concurrent connections. -t timeout --timeout timeout Make connections time out after the given number of seconds. With a value of 0, pssh will not timeout any connections. -o outdir --outdir outdir Save standard output to files in the given directory. Filenames are of the form [user@]host[:port][.num] where the user and port are only included for hosts that explicitly specify them. The number is a counter that is incremented each time for hosts that are specified more than once. -e errdir --errdir errdir Save standard error to files in the given directory. Filenames are of the same form as with the -o option. -x args --extra-args args Passes a extra SSH command-line arguments (see the ssh(1) man page for more information about SSH arguments). This option may be specified multiple times. The arguments are processed to split on whitespace, protect text within quotes, and escape with back- slashes. To pass arguments without such processing, use the -X option instead. -X arg --extra-arg arg Passes a single SSH command-line argument (see the ssh(1) man page for more information about SSH arguments). Unlike the -x option, no processing is performed on the argument, including word splitting. To pass multiple command-line arguments, use the option once for each argument. -O options --options options SSH options in the format used in the SSH configuration file (see the ssh_config(5) man page for more information). This option may be specified multiple times. -A --askpass Prompt for a password and pass it to ssh. The password may be used for either to unlock a key or for password authentication. The password is transferred in a fairly secure manner (e.g., it will not show up in argument lists). However, be aware that a root user on your system could potentially intercept the password. -i --inline Display standard output and standard error as each host completes. -v --verbose Include error messages from ssh with the -i and options. -I --send-input Read input and send to each ssh process. Since ssh allows a command script to be sent on standard input, the -I option may be used in lieu of the command argument. -P --print Display output as it arrives. This option is of limited usefulness because output from different hosts are interleaved. EXAMPLE
Connect to host1 and host2, and print "hello, world" from each: pssh -i -H "host1 host2" echo "hello, world" Print "hello, world" from each host specified in the file hosts.txt: pssh -i -h hosts.txt echo "hello, world" Run a command as root with a prompt for the root password: pssh -i -h hosts.txt -A -l root echo hi Run a long command without timing out: pssh -i -h hosts.txt -t 0 sleep 10000 If the file hosts.txt has a large number of entries, say 100, then the parallelism option may also be set to 100 to ensure that the com- mands are run concurrently: pssh -i -h hosts.txt -p 100 -t 0 sleep 10000 Run a command without checking or saving host keys: pssh -i -H host1 -H host2 -x "-O StrictHostKeyChecking=no -O UserKnownHostsFile=/dev/null -O GlobalKnownHostsFile=/dev/null" echo hi EXIT STATUS VALUES
0 Success 1 Miscellaneous error 2 Syntax or usage error 3 At least one process was killed by a signal or timed out. 4 All processes completed, but at least one ssh process reported an error (exit status 255). 5 There were no ssh errors, but at least one remote command had a non-zero exit status. AUTHORS
Written by Brent N. Chun <bnc@theether.org> and Andrew McNabb <amcnabb@mcnabbs.org>. http://code.google.com/p/parallel-ssh/ SEE ALSO
ssh(1), pscp(1), prsync(1), pslurp(1), pnuke(1) February 25, 2010 pssh(1)
All times are GMT -4. The time now is 03:58 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy