【问题标题】:how to ftp remote server through running a shell script如何通过运行 shell 脚本来 ftp 远程服务器
【发布时间】:2013-02-27 13:51:34
【问题描述】:
ftp ipaddress
bin
hash
cd path
get filename
quit

我希望这些行在 shell 脚本中执行,只有在输入用户名和密码后执行第一行,其余行不执行,控制卡在 ftp> 提示符下

【问题讨论】:

    标签: shell unix


    【解决方案1】:

    一旦您的脚本调用程序ftp,shell 就会失去控制,直到 ftp 程序完成。所以你需要使用一些新技术。一种方法是使用程序expect,您可以在此处获得提示:https://stackoverflow.com/a/12598169/4323。另一种方法是使用更“可脚本化”的 FTP 客户端,例如 Linux 上的lftp,它具有特定功能,可以实现您想要的那种脚本化使用。

    【讨论】:

    • 谢谢约翰让我试试你的方法,会回复你的
    【解决方案2】:

    如果您想在脚本而不是交互式 shell 中执行此操作,则需要使用非交互式 FTP 客户端。 ncftp 是您可以查看的。

    【讨论】:

      【解决方案3】:

      或者你可以使用一个shell“这里”文档:

      #!/bin/bash 
      
      ftp -in <<EOS
      user pswd
      bin
      hash
      cd path
      get filename
      quit
      EOS
      

      here 文档通过打开程序的标准输入发送所有内容,就像您在命令行中输入一样。请注意,ftp 客户端可能很挑剔,而且每个客户端似乎都有自己的一套陷阱,因此可能需要进行一些实验和使用man ftp

      看起来这在 Stackoverflow 上已经出现过,您可能需要仔细阅读 how to ftp multiple file using shell script

      IHTH

      【讨论】:

      • 我认为 John 是正确的,因为一旦调用 ftp,shell 就会失去控制,直到 ftp 程序完成
      • 解决 ftp 客户端脚本问题是您可以花费数天时间解决的问题。我没有时间详细调试这个。我强烈建议您阅读您的 ftp 客户端的手册页,并查看 stackoverflow 上的任何 401 问题,这些问题可以通过搜索 [unix] ftp 找到。我已经包括了一个很好的 S.O.在我的回答中,这应该是一个很大的帮助。 尝试将调用行更改为ftp -in &lt;&lt;EOS。祝你好运。
      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 2021-09-04
      • 2012-07-25
      • 1970-01-01
      相关资源
      最近更新 更多