【问题标题】:How to write SFTP script without expect?如何在没有期望的情况下编写 SFTP 脚本?
【发布时间】:2015-02-10 13:29:49
【问题描述】:

我有这个脚本,但它需要 expect 包才能工作我们是否有任何其他方式通过 SFTP 上传文件而没有 expect,因为我们的安全团队不允许在生产服务器上安装 expect 包。

我的 SFTP 上传代码。

/usr/bin/expect<<EOD
spawn /usr/bin/sftp -o Port=$PORT master@$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "put $SOURCE_FILE $TARGET_DIR\r"
expect "sftp>"
send "bye\r"
EOD

有人可以帮我在不使用期望的情况下将其转换为吗?

我们的 SFTP 服务器使用用户名密码

【问题讨论】:

    标签: bash shell ftp sftp system-administration


    【解决方案1】:

    OpenSSH sftp 客户端不支持为自动化提供密码。

    所以你必须以某种方式解决这个问题:

    • 使用expectsshpass 伪造用户输入
    • 使用公钥认证
    • 使用任何其他(不太常见的)无密码身份验证方法

    【讨论】:

      【解决方案2】:

      一个好的解决方案是使用 lftp 命令,它只允许在一个命令行中提供密码和运行 sftp 命令,如下所示:

      lftp sftp://$HOST -u username,password -e "put $SOURCE_FILE $TARGET_DIR;bye"  
      

      【讨论】:

      • 如果这不是标准实用程序,您应该提供一个链接。
      • 当然:这是一个标准的 Unix 实用程序。它也可以在 Windows 平台上与 Cygwin 一起使用。
      • 好的,它不在我的 RHEL 或 OS X 机器上,而且我从未听说过它,所以认为值得一提。
      猜你喜欢
      • 2017-12-06
      • 2014-11-29
      • 1970-01-01
      • 2011-09-01
      • 2018-01-01
      • 2019-11-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      相关资源
      最近更新 更多