【问题标题】:How to add confirm in shell script in sftp mode [duplicate]如何在 sftp 模式下在 shell 脚本中添加确认 [重复]
【发布时间】:2013-10-25 13:28:18
【问题描述】:

我有一个 shell 脚本,它正在执行一些重命名和归档步骤。我添加了 sftp 命令来复制多个文件。但是当我尝试通过 putty 登录到远程机器时,它会要求确认,例如 Are you sure you want to continue connection (yes/no)? 。我需要输入是。但由于这是通过脚本完成的,我不知道该怎么做。下面是我正在使用的脚本

cd <File Source Location>
sftp user1@remoteserver
sftp> cd <target location to be copied>
sftp> mput *.gz 

quit

sftp user1@remoteserver 执行后如何在上面的代码中传递 yes。

非常感谢任何帮助。

【问题讨论】:

    标签: shell ssh sftp sh


    【解决方案1】:

    我认为您正在尝试解决错误的问题。

    sftp 要求您确认,因为它还不知道主机的密钥。因此,您需要像这样将它添加到您的known_hosts 文件中

    ssh-keyscan -H remoteserver >> ~/.ssh/known_hosts
    

    我建议使用scp 命令而不是sftp,因为它会一步完成您想要的所有操作。

    scp somewhere/*.gz user1@remoteserver:somewhere/else
    

    如果出于某种原因您不想这样做。您可能会考虑一个非常不安全的命令

    sftp -o StrictHostKeyChecking=no user1@remoteserver
    

    通过使用上述命令,您很容易受到中间人攻击,您已收到警告。

    【讨论】:

    • 感谢@Grzegorz。我在 known_hosts 中添加了密钥。我们必须使用 sftp 来复制文件,所以我如何输入 mget 命令,因为当我执行 shell 脚本时,它会执行所有内容并等待我输入命令。有没有办法绕过这个,以便脚本通过 mget 命令。
    • @Sriram 是的,scp 命令完全符合您的要求,它不像sftp 那样具有交互性,因此您可以在脚本中使用它。
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2014-05-28
    • 2022-10-17
    • 1970-01-01
    • 2010-09-19
    • 2019-05-12
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多