shell实现ftp命令示例

FTP、SFTP、LFTP文件传输协议使用 ftp - 文件传输协议,现在有更安全的sftp,以及更强大的lftp;命令基本相同,真的需要使用ftp可以使用man ftp。Sftp - OpenSSH 安全文件传输。Left - 复杂的文件传输程序。如上查看命令怎么使用时,使用。以及help再查看即可。 阅读详情

一、shell脚本示例:

 


 
  1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

  2. ftp -niv <<- EOF

  3. open IP_ADDRESS

  4. user USERNAME PASSWORD

  5. ascii(or bin)

  6. put *(or get)

  7. bye

  8. EOF

 

 

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

    1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

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

    2. ftp -niv <<- EOF

        由于是脚本,因此我们要给此FTP脚本定义一个结束的符号,在这里,定义的结束符是“EOF”。你也可以自己来定义其他的。不过建议用“EOF”,这在绝大多数编程语言中,都表示结束:End Of File。
        -v:显示远程服务器的所有响应信息;
        -n:限制FTP的自动登录,即不使用; 
        -i:关闭多个文件传输时的交互过程;

    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

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

 

 

关于shell脚本实现的FTP传输的返回值问题:

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

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

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

 

 

 

二、FTP命令

1.查看FTP服务器上的文件

        dir 命令:显示目录和文件列表。
        ls 命令:显示简易的文件列表。
        cd 命令:进入指定的目录。
    dir命令可以使用通配符“*”和“?”,比如,显示当前目录中所有扩展名为jpg的文件,可使用命令 dir *.jpg。
    cd命令中必须带目录名。比如 cd main 表示进入当前目录下的main子目录,cd .. 表示退回上一级子目录。

 

2.传输类型

  type 命令:查看当前的传输方式。
  ascii 命令:设定传输方式为ASCII码方式。
  binary 命令:设定传输方式为二进制方式。

 

3.下载/上传文件

  get 命令:下载指定文件。
  get命令的格式:get filename [newname],filename为下载的FTP服务器上的文件名,newname为保存在本地计算机上时使用的名字,如果不指定newname,文件将以原名保存。
  get命令下载的文件将保存在本地计算机的工作目录下。该目录是启动FTP时在盘符C:后显示的目录。如果想修改本地计算机的工作目录,可以使用 lcd 命令。比如:lcd d:\ 表示将工作目录设定为D盘的根目录。
  mget 命令:下载多个文件。
  mget命令的格式:mget filename [filename ……]。
  mget命令支持通配符“*”和“?”,比如:mget *.mp3 表示下载FTP服务器当前目录下的所有扩展名为mp3的文件。

  put 命令:上传指定文件。
  put命令的格式:put filename [newname],filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原名上传。
  上传文件前,应该根据文件的类型设置传输方式,本机的工作目录也应该设置为上传文件所在的目录。

 

        mdelete命令:批量删除文件

 

4.结束命令

  close 命令:结束与服务器的FTP会话。
  quit 命令:结束与服务器的FTP会话并退出FTP环境。
  bye 命令:结束与服务器的FTP会话并退出FTP环境。

 

5.其它命令

  status 命令:显示当前ftp状态

  prompt 命令: 切换交互式指令,默认开启on/off(使用 mput/mget 时不用每个文件皆询yes/no)

  delete 命令: 删除远端主机中的文件

 

 

6.其它FTP使用技巧

网址:http://www.chinaunix.net/jh/7/6519.html

FTP(文件传输)和E-mail(电子邮件)、Telnet(远程登录)一样,是Internet的三大主要功能之一。因为使用频繁,用户往往会遇到各种各样的问题,合理利用FTP命令的初始化文件.netrc,使运行FTP后自动执行某些FTP的内部命令,可有效地克服各种使用中的不便,极大地方便FTP的使用者。

·netrc中应包含的基本命令

  FTP中有几十个命令,在.netrc中应该设置的大致有如下几条:
  1.default loginpassword
  在Internet中,存在大量的匿名ftp帐户,用户在不同的主机间频繁登录anonymous帐户,输入自己的电子邮件地址作为口令,这种输入极其繁琐,完全有必要利用.netrc文件,在进入ftp时自动完成该过程。
  2.binary
  许多用户在下载大量文件之后才意识到下载的文件是二进制文件,而自己却是使用ascii方式传输,使下载文件无法使用,做了许多无用功。
  在.netrc文件中提前将传输方式设置为binary,完全可避免出现上述情况。
  3.runique
  使用Internet的用户都知道,在浩如烟海的文件中,有大量同名文件,如readme、index等,如果将同名文件下载到同一目录,则新传的文件会覆盖原同名文件。为了使具有潜在重要性的文件不至于被意外覆盖,也需要在.netrc文件中,设置runique参数防止上述错误。
  4.prompt off
  使用ftp时,经常会用到mget或其它需要确认的ftp命令,将此确认过程取消,可大大方便使用者。
  5.hash on
  ftp中的hash命令,使得在进行文件传输时,每传输1千字节,在屏幕上显示一个"#"号,用户通过观看屏幕上的"#"号,可以很直观地看到传输速度的快慢,以及文件的传输完成情况,以决定进一步的操作。
  6.idle 7200
  目前国内的Internet专线速率普遍偏低,用户数却在急剧膨胀,所以用ftp传输销大一些的文件时,经常会因为线路拥塞而断线,致使ftp进程中断,为了减少因断线而反复登录的次数,需将idle命令的参数设置为最大(一般为7200秒)。
  7.macdef
  macdef定义一个宏,macro_name为宏定义的名称。在macdef行下,可输入任何有效的ftp命令,并以空行结束宏定义,执行时只需在宏名前加"$"号即可。如果宏名定义为init,则该宏命令在启动ftp后自动加以执行,无需用户输入$ macro_name。

·netrc的使用举例

  1.用vi编辑器先编辑一个如下的文件:
    default login anonymous password user@my.site
    macdef init
    binary   .
    runique  .
    hash on  .
    prompt off
    idle 7200
    (空行)
  第1行意为缺省情况下,进入anonymous帐户,并以自己的电子邮件地址为口令;第2行至第8行定义了宏init,该宏中的所有5条命令将在进入ftp环境后立刻执行,第8行(空行)不可省略,否则为无效宏定义。
  2.利用.netrc可将用户所需操作大大简化,极大地提高工作效率。如,利用archie命令查找到文件xplaygizmo-1.0.gz在匿名ftp主机上unsite.unc.e-du的目/pub/packages/solaris/freeware下,用户欲将该文件用ftp下载,只需用vi编辑器将archie的查找结果插入到.netrc文件空行之上,即增加下列三行:
    cd/pub/packages/solaris/freeware
    get xplaygizmo-1.0.gz
    bye
    (空行)
  运行ftp sunsite.unc.edu,即自动完成上述.netrc中的所有操作,无需任何人工干预。屏幕将显示类似于下面的结果:
    Connected to sunsite.unc.edu.
    220 calzone FTP server(Version wu-2.4(38)Wed
0ct 2 09:30:40 EDT 1996)ready
    331 Guest login ok,send your complete e-mail
address as password.
    230.............
    230 Guest login ok,access resrictions apply.
    200 Type set to I.
    Receive unique on.
    Hash mark printing on (1024 bytes/hash mark).
    Interactive mode off.
    200 Maximum IDLE time set to 7200 seconds
    cd/pub/packages/solaris/freeware
    250 CWD command successful.
    get xplaygizmo-1.0.gz
    200 PORT command successful.
    150 Opening BINARY mode data connection for
xplaygizmo-1.0.gz(8753 bytes).
    ########
    226 Transfer complete.
    8753 bytes received in 50.8 secs(0.17
Kbytes/sec)
    221 Goodbye.

  缺省时,运行ftp命令将检测用户的HOME目录中的.netrc文件,并自动加以执行,如果不想使用.netrc,可在ftp命令行中使用-n参数加以取消。

 

 

 

参考:

http://blog.163.com/mcse_mcsa/blog/static/1652747232007228520488/

http://www.edu.cn/20010830/210045.shtml

http://hi.baidu.com/30way/blog/item/faceb0f08afe59aaa50f52ba.html

Linux实现文件上传ftp服务器脚本代码 工作期间,每次将文件上传至ftp服务器时,均需要手工输入ip、用户名、密码等,因此,考虑编写脚本完成文件的上传任务。具体的脚本sync.sh如下: #!/bin/bash source ~/.bashrc # 模拟进入ftp命令行模式,其中EOF表示退出标记符 ftp -niv <<- EOF # 根据ftp的ip地址与端口号,连接ftp服务器 open ip port # 输入用户名与密码 user userName password # 以bin模式进行传输,与ASCII模式有区别,使用bin模块能够防止乱码问题 bin # 上传文件 get $1 # 结束 bye #退出 EOF 然 立即下载

相关推荐

告别水印!Vue3项目集成Stimulsoft.Reports.js完整配置与激活指南

本文详细介绍了如何在Vue3项目中集成Stimulsoft.Reports.js,提供从授权策略到性能优化的完整解决方案。通过模块化架构设计和现代化引入方式,帮助开发者高效实现专业级报表功能,同时避免版权风险和水印问题,特别适合中小型项目需求。

weixin_33701294的博客 431

ftp命令大全详解

在服务器端,FTP有两个预分配的的端口号,分别为20和21.其中,端口20用于发送和接受FTP数据(ASCII码或二进制文件),该数据端口只在传输数据是打开,并在传输结束时关闭。39.nmap[inpattern outpattern]:设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。比如,在 /usr/my下运行的ftp命令,则文件都下载到了/usr/my下。

a1058926697的博客 7万+

相机基础知识讲解:CMOS和CCD

相机基础知识讲解:CMOS和CCD

Coppa的博客 5万+

ftp常用命令_ftp port命令

Linux操作系统的用户即ftp的用户,也可以配置专用的ftp用户,专用的ftp用户只能用于ftp,不能登录操作系统。不同linux版本防火墙的配置有所不同,centos7中的防火墙改成了firewall。命令含义:–zone # 作用域–add-port=21/tcp # 添加端口,格式为:端口/通讯协议–permanent # 永久生效显示success为成功如果要采用主动模式,防火墙还要开通20端口。

2401_85957247的博客 4339

FINN vs GFED vs GFAS vs QFED:四大火灾排放清单实战对比(含Python数据处理代码)

本文针对GFED、FINN、GFAS、QFED四大主流火灾排放清单,提供了实战对比分析与Python数据处理代码。通过量化对比东南亚农业火点与亚马逊雨林大火两个典型场景,揭示了不同清单在时空分辨率、算法内核和应用场景上的核心差异,并给出了基于研究目标、区域和模型的清单选择决策框架,帮助研究人员为空气质量模拟或火灾影响评估挑选最合适的数据源。

s3t4u的博客 422

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1564

FTP常用命令详解

39.nmap[inpattern outpattern]:设置文件名映射机制,使得文件传输时,文件中的某些字符相互转换,如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。20.get remote-file[local-file]:将远程主机的文件remote-file传至本地硬盘的local-file。38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。

volcano2339的博客 1万+

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7793

shell ftp使用摘要

请问如何在终端中用命令行进入带空格的目录?在空格前面加个/ 如[root@localhost c]# cd Documents/ and/ Settings/一个ftp传输的脚本#!/usr/bin/bashFTPHostIp="ipaddress"FTPUser="username"FTPPasswd="password"FtpSrcDir="/FTP_Src_HOME"DataDir=Data

萝卜的博客 4132

华为 MetaERP 总账模块依托 “交易即核算” 的事件驱动架构,与 Oracle EBS 相比,更强调业务事件自动触发财务动作、实时数据同步和智能规则引擎,实现业务与财务的深度融合

华为MetaERP总账模块采用"交易即核算"架构,相比Oracle EBS实现了三大突破:1)业务事件自动触发财务动作,如采购收货自动生成暂估凭证;2)业务财务数据实时同步,支持即时分析;3)内置智能规则引擎,实现自动匹配、核销和结转。该模块覆盖采购、销售、资产、薪酬等全业务场景,支持多维核算和关联交易自动抵消,显著提升核算效率与准确性。其中采购暂估、销售结转等场景实现全自动化处理,较EBS减少80%手工操作。

金牌架构师 222

17 指挥AI写Mamba相关模型代码,快速适配大模型场景

本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十七篇,属于第三阶段多场景实战核心内容。本篇聚焦当下大模型领域热门的**Mamba架构**,针对零基础大模型开发、无深度学习基础的使用者,拆解指挥AI生成Mamba基础模型、微调适配、推理部署代码的核心方法,覆盖Mamba基础模块搭建、简易序列建模、小样本微调、本地推理等高频场景,提供可直接复用的高质量指令模板、完整可运行代码、环境配置与避坑指南,无需精通Transformer、状态空间模型等底层原理,轻松上手Mamba大模型开发。

coreopt的博客 61

⭐⭐【Shell 命令集合 文件传输 】Linux ftp工具 使用指南

【Shell 命令集合 文件传输 】Linux ftp工具 使用指南

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 2433

SQL中的时间计算:员工每日工作时长

摘要:本文介绍了一个使用SQL查询计算员工每日工作时长的实用方法。通过分析包含员工打卡记录的数据库表,利用CTE(公共表表达式)将日期分组,计算最早和最晚打卡时间差,最终以"小时:分钟"格式输出工作时长。该方法适用于每日两次打卡的场景,并提示了处理漏打卡等特殊情况时的注意事项,为企业考勤管理提供了有效的数据支持方案。(148字)

m0_74337424的博客 412

java 调shell_Java调用Shell命令的方法

本文实例讲述了Java调用Shell命令的方法。分享给大家供大家参考。具体如下:近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将调度信息生成一个Txt文件,然后将这个Txt文件发送到另外一个系统(Kondor)中。生成文件自然使用OutputStreamWirter了,发送文件有两种方式,一种是用写个一个类似于FTP功能的程序,另外一种就是使用Java来调用Shell,在Shell中完...

weixin_39820177的博客 341

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ftp shell cmd

ip_addr="$1" name="$2" passwd="$3" command1="$4" command2="$5" command3="$6" echo "open $ip_addr">ftp_input echo "user $name $passwd">>ftp_input echo "binary">>ftp_input echo "epsv4">>ftp_input echo "

elfylin的专栏 1331

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

linux下面ftp/wget命令下载文件夹目录

目标ftp服务器是一个非标准端口的ftp1.通过shell登录#ftp    //shell下输入ftp命令,进入到ftp提示符&gt;open IP  PORT   //IP ,PORT对应为服务器的IP和端口号或者直接使用一条语句#ftp  IP  PORT2.多文件下载(对目录无效)如:下载目录下的所有文件(子目录是无法下载下来的)&gt;mget * 这样操作,下载每个文件都会提问,每次都...

志存高远 5万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ftp脚本

<br />面给出两个范例,供大家参考 <br />来自:http://www.chinaunix.net,/<br />十分感谢作者:deathcult代码:1, #!/bin/sh F="xxxx.ftp" echo "open 192.168.7.51 21" > $F echo "user username passwd" >> $F echo "bin" >> $F echo "cd /home/xxx/"

x1y31的专栏 2023

ftp脚本实现ftp自动处理

比如下面一段脚本存成一个文件ftpcommand.ftpopen 10.192.77.53informix1put haha.txtquit意思为打开10.192.77.53 ,用户名为informix,密码为1。然后执行ftp命令调用时为: ftp -s:ftpcommand.ftp 就可以完成。当然语句写在.bat或.sh中即可完成对ftp的自动自理下面是一个批处理:@echo off

vinep的专栏 1547

shell脚本连接ftp推送文件夹_Shell脚本实现FTP上传下载文件

Linux下使用Shell脚本实现FTP自动上传和下载文件介绍一个 FTP客户端-IIS7服务器管理工具作为FTP客户端,它支持批量管理ftp站点。定时上传和定时下载,定时备份,且操作简洁。同时iis7服务器管理工具还是vnc客户端。并且支持批量管理管理windows及linux服务器、vps。让服务器真正实现了一站式管理,真的是非常方便。官网地址:http://fwqglgj.iis7....

weixin_42323034的博客 1085

shell如何解决mysql交互式_Shell脚本中的交互式命令处理

先贴代码:DATE=`date -d -1hour +%T`fileName=erver_`date -d now +%Y-%m-%d-%H%M%S`.txtcp /home/BLload_bak/$fileNameHOST='ipxxx.xxx.xxx.xxx'PORT=''USER='xx'PASSWD='xx'FILE=$fileName# 注意Here Document中引用的变量必须大写...

weixin_34668147的博客 1103
上一篇: linux下并行运行脚本与让程序可靠运行
下一篇: nohup和&后台运行,进程查看及终止
TheManOfCoding
博客等级 码龄9年 24粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值