bash 脚本:使用expect

bash 脚本:使用expect

当我简单地运行这些命令时,我遇到了一个问题。

由于第一次使用 scp 建立连接,远程服务器希望传递“yes”以将密钥添加到 RSA 文件中。

命令如下

#!/bin/bash

scp  -P58222 root@IP:/root/K /N
/usr/bin/expect -c 'expect "\n" { expect "Are you sure you want to continue connecting (yes/no)?" }'
send "yes\r"
expect "$ "
send "exit\r"

实际上我必须yes在展示时传递我的脚本

Are you sure you want to continue connecting (yes/no)?

我怎样才能摆脱这个问题..?

答案1

无需使用 Expect 编写响应脚本,只需在添加之前关闭提示即可。

scp -o "StrictHostKeyChecking no" ...

由于您expect首先使用的是 ssh,因此我只想说ssh-copy-id设置无密码 ssh 是一种更好的方法。

答案2

这是我的工作脚本的片段。

  send_user "FILE \"FILETEMPL\" is copied to active.\n"  
  spawn scp -l 60 FILETEMPL root@IP:PATHTEMPL/FILETEMPL  
  # After scp we should wait "#" or "100%".  
  set timeout 600  
  expect {  
    "password: " {   
      send "PASS\r"   
        expect {  
          "100% "         {...}  
          "password: " { .. }  
          timeout      { ... }  
      }   
    }  
    timeout      { exit 1 }  
    eof          { exit 2 }  
  }   

相关内容