• 自动FTP的小脚本


     

    自动FTP的小脚本  

    使用以下脚本,可以实现自动FTP,将你需要的文件传送到需要的地方,或者将需要的文件从某个地方抓取下来。

    cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

    ftp -n <<- EOF

    open IP_ADDRESS

    user USERNAME PASSWORD

    ascii(or bin)

    put *(or get)

    bye

    EOF

     

        下面详细讲解以下这段代码:

        1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

            首先将进入你要上传得文件所存在的目录,或者是想将某个FTP上的文件下载到的目录。这样就免去了在真正进入FTP站点以后,还需要修改本地路径的麻烦。

        2. ftp -n <<- EOF

            由于是脚本,因此我们要给此FTP脚本定义一个结束的符号,在这里,定义的结束符是“EOF”。你也可以自己来定义其他的。不过建议用“EOF”,这在绝大多数编程语言中,都表示结束:End Of File

        3. open IP_ADDRESS

            表示连接FTP站点,这里的IP_ADDRESS就是FTP站点的IP地址。

        4. user USERNAME PASSWORD

            这是你进入该FTP站点的用户名和密码。以上两个结合起来,就相当于我们通过浏览器进入FTP站点时候,经常使用的ftp://username:password@ip_address的办法。

        5. ascii(or bin)

            我们都知道FTP传送有两种方式:asciibinary。这里就是指定你要传送的方式。这很重要,因为这将决定你传送或者获取的文件是否正常可用。

        6. put *(or get)

            put *表示将第一条cd进入的路径下所有的文件都传送到刚刚连接进入的FTP站点。当然,你也可以指定某一个或者几个文件,而不一定是所有的。而get则表明是将刚刚进入的FTP站点那个FTP跟目录下的文件获取到本地——第一条cd命令进入的那个路径下。当然,如果你所需要的文件不在FTP的根目录下,在使用这个命令之前,你还要使用cd命令来修改一下FTP站点的当前路径。

        7. bye

            完成应该完成的工作以后,当然就是断开和FTP站点的连接了。

        8. EOF

            这个符号之前已经讲过。当脚本遇到这个符号的时候,它就知道应该结束了。

        有个偷懒的办法是,可以将以上的脚本写成一个函数,然后再需要的时候调用这个函数即可。

    autoftp()

    {

    cd

    ftp -n <<- EOF

    open IP_ADDRESS

    user USERNAME PASSWORD

    ascii (or bin:binary)

    put (or get)

    bye

    EOF

    }

     

     

        另外,还有一个需要注意的地方,就是在该段程序的后面,你需要去判断自动FTP是否成功了——就是你传送或者获取是否成功了。这里的判断也有两个思路:

        1. 如果是获取,则在本地判断是否已经成功获取。如果是传送,则需要再次调用自动FTP脚本,在FTP服务器正确的目录去判断是否传送成功。不过这样的办法显然是“笨重”的;

        2. 通过shell常用的方式:$?来判断是否成功,如果返回值是0则表示成功,而返回值非0则表示没有成功——但是,我所说的需要注意的地方,正是这里需要注意的。其实以上代码,不管是否自动FTP是否成功,返回值其实都是0。这会让很多人困扰,为什么呢?不要忘记了,其实你最后的代码脚本是EOF,所以,不管你前面自动FTP传送还是获取都是失败的,其实这个正常结束的符号让这个脚本“正常结束”了,因此,$?的返回值就是0了。

     

     

     

     

  • 相关阅读:
    大数据和云计算
    关于移动开发的一些讨论(在有些场合,移动就是噱头,胡乱鼓吹是不负责任的)
    软件开发设计中的两个误区
    【转】从底层了解ASP.NET体系结构
    DotNet命名规范参考(转)
    PAD会取代PC吗
    转:关于http server
    AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!
    关于字符集(讲的比较清楚的一片字符集科普文章)
    .NET vs JAVA
  • 原文地址:https://www.cnblogs.com/hllnj2008/p/4000233.html
Copyright © 2020-2023  润新知