自动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传送有两种方式:ascii和binary。这里就是指定你要传送的方式。这很重要,因为这将决定你传送或者获取的文件是否正常可用。

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了。

自动FTP的小脚本的更多相关文章

  1. Android自动截屏小脚本

    @echo off echo * 截图文件将保存在 E:\pic下,以当前日期+时间命名. echo ================================================= ...

  2. windows下自动FTP的脚本

    之前发过一篇如何自动FTP的文章,不过当时的脚本都是在Unix下测试通过的.而如果在windows下实现自动FTP的功能,则需要通过如下方式:     1. 建立ftp123.bat文件 open I ...

  3. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  4. United States Department of Agriculture 美国农业部网站数据自动下载小脚本

    帮对象写的自动点击页面的小脚本,如果有需要的可以试试,(#^.^#) https://apps.fas.usda.gov/gats/ExpressQuery1.aspx var year = '199 ...

  5. 通过kfed自动获取磁盘信息的小脚本

    通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...

  6. 自动部署Springboot项目脚本小脚本

    #!/bin/bash echo '自动部署Springboot项目脚本...' # aaa.jar 项目jar包 pid=`ps -ef|grep aaa.jar|grep -v grep|grep ...

  7. 写了一个常规性生成merge 的小脚本

    现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了. 随 ...

  8. 用Python实现一个爬取XX大学电费通知的小脚本

    内容简要 1分析网站 2简单爬取 3进阶自定义爬取 4保存进数据库 学校基础设施太差,宿舍电量过低提醒虽然贴在楼下,但是作为低头一族,经常忘记看提醒导致宿舍酣战时突然黑屏,为了避免这种尴尬的场景以及强 ...

  9. Python FTP多线程爆破脚本

    初学python, 自己编写了个FTP多线爆破小脚本代码很丑= = #!usr/bin/env python #!coding=utf-8 __author__='zhengjim' from ftp ...

随机推荐

  1. [原] perforce 获取本地最近更新的Changelist

    获取perforce客户端最后一次sync的changelist, 前提是中间没有任何代码提交: http://stackoverflow.com/questions/47007/determinin ...

  2. GCD异步加载网络图片

    //image dispatch_queue_t network_queue; network_queue = dispatch_queue_create("com.myapp.networ ...

  3. Embedding Lua in C: Using Lua from inside C.

    Requirments:     1: The Lua Sources.    2: A C compiler - cc/gcc/g++ for Unix, and Visual C++ for Wi ...

  4. LightOj 1065 - Number Sequence (矩阵快速幂,简单)

    题目 和 LightOj 1096 - nth Term 差不多的题目和解法,这道相对更简单些,万幸,这道比赛时没把模版给抽风坏. #include<stdio.h> #include&l ...

  5. TVM 下载监控

    iftop -n -i em1 -F 218.26.188.220/32 到10.10.81.23上用上面的语句看山西的流量. 到/opt/data/log/下看日志 到/opt/data/tvmca ...

  6. C++和pascal之间的通信

    // MyFirst.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include "Winsock2.h"#pragm ...

  7. 李洪强iOS开发之【Objective-C】08-self关键字

    一.Java中的this只能用在动态方法中,不能用在静态方法中 1.在动态方法中使用this关键字 1 public class Student { 2 private int age; 3 publ ...

  8. 欧拉工程第64题:Odd period square roots

    题目链接 找循环位数是奇数的数有多少个 这个自己很难写出来,完全不能暴力 维基百科链接 维基百科上面说的很好,上面的算法实现就好了. 就是上面的 Java程序: package project61; ...

  9. web服务器和应用服务器概念比较

    转自:http://hi.baidu.com/lclkathy/blog/item/dae3be36763a47370b55a970.html 一 常见的WEB服务器和应用服务器 在UNIX和LINU ...

  10. 2.Sprng-IoC-Java反射例子

    1.Car.java package com.jike.spring.chapter03.reflect; public class Car { private String brand; priva ...