I can't see any reason why the code in red is not working. I did notice that my ssh/scp have a lowercase P in password, however this should just cause a timeout delay before sending the password. Can I suggest using expect "?assword:*"
It it possible that the command you actually used is different to what you posted? Did you try doing the same command from the shell prompt to ensure it's working (eg output path is correct).
Perhaps you will find my script easier to work with. I can see now that you want to use ssh not telent. I've commented it some more and updated for ssh. It looks for a server_list file and produces a local config_details output file:
So the script ran well, but didn't fetch me the expected o/p in the "config_details" file on the source server(My_NIM_Server), contents of this file below:
So essentially, what I understood is - the below portion of the script fails due to some reason:
The $host variable is captured but not the $output. Leads again pls..
I looks like you have a large delay between entering the password and the unix prompt appearing. Do you experience this delay when logging in normally?
I know AIX can experience large login delays if /etc/resolv.conf is pointing to a non-existent nameserver, basically the reverse DNS lookup of the incoming IP address stalls waiting for a response.
If you are seeing these delays you may need to extend the timeout defined at the top of the script. It might be a good debugging tool anyway, extend timeout to say 10 seconds and watch where you see pauses in the output.
You may have to tweak this command to properly match the prompts you use on each of your servers:
Currently the above looks for any line ending in one of % # > or $ followed by zero or more spaces. This could match text in your login messages or message of the day and is why I usually change PS1 to a unique string ASAP in these type of expect scripts.
Your target is to get output like this:
Notice how the commands are not output during the message of the day/ login banner. The PS1= command executes first and changes the system prompt, this is very important because the output capture from oslevel needs to match on the prompt to properly capture the command output.
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:
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):
in2nix4life,
Your recent suggestion gave me error too, modified code pasted below:
Error:
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:
And the code to scp the above run cmd o/p's is as below:
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 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)
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,
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)
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)
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)
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)
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)
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 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)