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