I want to run a command which will connect to a remote host and perform some actions, while I try to run the command below actions are required.
The authenticity of host 'test.example.com' can't be established. RSA key fingerprint is 45:57:9e:d6:6f:b5:cc:c6:00:3f:90:ec:a1:9d:4e:5f. Are you sure you want to continue connecting (yes/no)? Please type 'yes' or 'no':
also it asks for a password as below
tes@test.example.com's password:
I have written a perl script as below:
sub user_expect() { print "==== Now executing the following command:n"; print "$cmdn"; $exp = new Expect(); $exp->raw_pty(1); $exp->log_file("output2_user", "w"); $exp->debug($debug); $exp->spawn("$cmd"); $exp->expect($timeout,'-re', '?s$'); # Authenticity question (yes/no) $exp->send("yesn"); $exp->expect($timeout,'-re', ':s$'); # In case on console am expected to type yes/no - Please type 'yes' or 'no': $exp->send("yesn"); $exp->expect($timeout,'-re', 'word:$'); # enter password $exp->send("xyzn"); $exp->expect(500,'-re', 'mailbox deleted successfully.$'); $exp->hard_close(); return 1; }
I needed a code which can answer the questions asked on console i.e. as below and also the password console
The authenticity of host 'test.example.com' can't be established. RSA key fingerprint is 45:57:9e:d6:6f:b5:cc:c6:00:3f:90:ec:a1:9d:4e:5f. Are you sure you want to continue connecting (yes/no)? Please type 'yes' or 'no':
I am not sure on the mistake I have done regarding the script, can someone please help ?
Problem is – I think the “yes” that needs to be typed for below query is not taken because of which the query “Please type ‘yes’ or ‘no’: ” is shown on console. Then my script stops there and does not proceed with password prompt.
Are you sure you want to continue connecting (yes/no)?
Advertisement
Answer
I changed the code as below, it was successful:
sub rehostuser_expect() { $expect= Expect->new; $expect->raw_pty(1); $expect->spawn($cmd) or die "Cannot spawn $cmd: $!n"; $expect->expect($timeout, [ qr/.*?/i, #/ sub { my $self = shift; $self->send("yesrn"); exp_continue; } ]); $expect->expect($timeout, [ qr/password:/i, #/ sub { my $self = shift; $self->send("$passwordn"); exp_continue; } ]); $expect->hard_close(); }