Sponsored Content
Top Forums Shell Programming and Scripting How to use 'expect' to pass UID & Password to a "for loop" in shell script? Post 302875357 by thisissouvik on Tuesday 19th of November 2013 10:00:31 AM
Old 11-19-2013
XL,

I would have to do some more trial & error method to make your suggested technique of this script to work -- I'll update this discussion as soon as I could get it work. FYI, the highlighted portion(in red) below doesn't work:

Code:
My_NIM_Server:msouvik:/export/home/msouvik>./expect_script_3.sh
msouvik@My_NIM_Client_1's password:
Last unsuccessful login: Thu Nov 14 12:13:52 GMT 2013 on ssh from My_NIM_Server
Last login: Mon Nov 18 12:18:57 GMT 2013 on /dev/pts/2 from x.x.x.x
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.1!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
My_NIM_Client_1:msouvik:/export/home/msouvik>PS1='PROMPT# '
PROMPT #oslevel -s
7100-02-02-1316
PROMPT #exit
Connection to My_NIM_Client_1 closed.

The script is not able to set the PS1 shell parameter, it does it without being able to set it as below(already shared before):

Code:
My_NIM_Server:msouvik:/export/home/msouvik>./expect_script_3.sh
msouvik@My_NIM_Client_1's password:
Last unsuccessful login: Thu Nov 14 12:13:52 GMT 2013 on ssh from My_NIM_Server
Last login: Mon Nov 18 12:18:57 GMT 2013 on /dev/pts/2 from x.x.x.x
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.1!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
My_NIM_Client_1:msouvik:/export/home/msouvik>oslevel -s 
7100-02-02-1316
My_NIM_Client_1:msouvik:/export/home/msouvik>exit
Connection to My_NIM_Client_1 closed.
msouvik@My_NIM_Client_2's password:
Last unsuccessful login: Thu Nov 14 12:13:52 GMT 2013 on ssh from My_NIM_Server
Last login: Mon Nov 18 12:18:57 GMT 2013 on /dev/pts/2 from x.x.x.x
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.1!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
My_NIM_Client_2:msouvik:/export/home/msouvik>oslevel -s 
7100-02-02-1316
My_NIM_Client_2:msouvik:/export/home/msouvik>exit
Connection to My_NIM_Client_2 closed.

in2nix4life,

Your recent suggestion gave me error too, modified code pasted below:

Code:
    +1  #!/usr/bin/expect -f
    +2  #
    +3  #
    +4
    +5  # slurp in file containing hostnames
    +6  set hostfile [open "server_list" r]
    +7  set hostdata [read $hostfile]
    +8  close $hostfile
    +9
   +10  # loop through hosts, connect, and run command
   +11  foreach h [split $hostdata "\n"] {
   +12      log_file myLog.log         # log output to a local log file
   +13      if {$h eq {}} continue  # skip any blank lines encountered in the server file
   +14      set u "msouvik"
   +15      set p "pass^123"
   +16      set cmd "oslevel -s"
   +17      spawn ssh -t $u@$h $cmd
   +18      expect "?assword:*"
   +19      send -- "$p\r"
   +20      send -- "exit\r"
   +21      send -- "\r"
   +22      expect eof
   +23  }

Error:

Code:
My_NIM_Server:msouvik:/export/home/msouvik>./expect_script.sh
wrong # args: extra words after "else" clause in "if" command
    while compiling
"if {$h eq {}} continue  # skip any blank lines encountered in the server file"
    ("foreach" body line 3)
    invoked from within
"foreach h [split $hostdata "\n"] {
    log_file myLog.log         # log output to a local log file
    if {$h eq {}} continue  # skip any blank lines ..."
    (file "./expect_script_4.sh" line 11)

Good news is, I could get my job done with pieces of code taken from each of your suggestions.
So, my expect code to run the desired cmd on target servers looks like this:

Code:
#!/usr/bin/expect -f
#
#

# set credentials
set u "msouvik"
set p "pass^123"

# get host name from command-line
set h [lindex $argv 0]

# set the command to run
set cmd "oslevel -s >> /export/home/msouvik/expect.out; multibos -S >> /export/home/msouvik/expect.out"

# spawn a connection to the host and run the given command
spawn -noecho ssh -t $u@$h $cmd

# handle the password prompt
expect "?assword:*"
send -- "$p\r"
send -- "\r"

And the code to scp the above run cmd o/p's is as below:

Code:
#!/usr/bin/expect -f
#

# set credentials
set u "msouvik"
set p "pass^123"

# get host name from command-line
set h [lindex $argv 0]

# scp the data onto NIM server
spawn -noecho scp $u@$h:/export/home/msouvik/expect.out /export/home/msouvik/expect/expect.out.$h

# handle the password prompt for scp
expect "?assword:*"
send -- "$p\r"
send -- "\r"

# done
expect eof

The scp is successfully able to get me the cmd o/p's to my NIM server suffixing with the relevant hostname as in "expect.out.$h"

You may ask, why did I choose to have 2 separate scripts for this purpose - thats coz when I club these to scripts into one - it fails to do the job(reason not known to me at the moment!)

The discussion doesn't end here until I'm able to fix both of your recent suggestions.


-- Souvik
 

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
All times are GMT -4. The time now is 08:40 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy