I am new in expect scripting.
I wrote a expect script for ssh in a linux machine,where I am facing problem in sshing on different linux machines.Below I have copied the script.
!/usr/local/bin/expect
set LinuxMachine [lindex $argv 0]
spawn ssh root@$LinuxMachine
expect "root@$LinuxMachine's password:"
send "root123\n"
expect "[root@Client_FC12_172_85 ~]#"
send "ls"
interact
When I supply 10.213.172.85
from command line the expect in the 4th line , it reads as "root@10.213.172.85's password:
" and the logins successfully
But some linux will expect-
The authenticity of host '10.213.172.108 (10.213.172.108)' can't be established.
RSA key fingerprint is da:d0:a0:e1:d8:7a:23:8b:c7:d8:40:8c:b2:b2:9b:95.
Are you sure you want to continue connecting (yes/no)
In this case script will not work.
Please let me know how can I have two expect statements in one expect command.
Thanks in Advance!!!
We like to call it "long log in", there are ssh options that don't check the host keys:
Part of the bash script that calls on the expect sets the password:
You can use exp_continue in such a case:
In the above, the expect block waits for either the yes/no question OR the prompt for password. If the latter, it moves on with providing password, expecting prompt, sending ls command and giving control back. If the former, it will answer 'yes' and repeat the expect block, ready to find the prompt for a password (or even the yes/no question again, for that matter - not that you will need that).
I would also include some timeouts with meaningful messages in case some expect option does not match as expected, but the above should work.
As a side comment, you don't want to set a root password in a script... I recommend using ssh key authentication.
Let me know how it goes.