Search code examples
shellautomationrsaexpecthost

How to ignore or Pass 'Yes' when The authenticity of host can't be established in Expect Shell script during Automation


I want to Provide 'Yes' automatically or Ignore it and proceed in a SECURE way, when the below statement comes during execution of my Expect Shell script?.

#!/usr/bin/expect
spawn ssh $user@$host

The authenticity of host 'abcdef (10.566.1.98)' can't be established. RSA key fingerprint is jk:94:ba:93:0b:eb:ff:df:ea:gh:hj:23:3c:hj:9c:be. Are you sure you want to continue connecting (yes/no)?


Solution

  • Make use of exp_continue for this scenario.

    #!/usr/bin/expect 
    set prompt "#|>|\\\$"
    spawn ssh dinesh@myhost
    expect {
            #If 'expect' sees '(yes/no )', then it will send 'yes'
            #and continue the 'expect' loop
            "(yes/no)" { send "yes\r";exp_continue}
            #If 'password' seen first, then proceed as such.
            "password"
    }
    send "root\r"
    expect -re $prompt
    

    Reference : Expect