ftp登陆命令

本文深入解析了如何使用Shell脚本实现FTP文件传输,包括脚本的各个部分及功能,如本地路径设定、连接参数、传输模式选择等。同时,详述了FTP基本命令的使用方法,如文件查看、传输类型设定、文件下载/上传、结束会话等,以及.netrc文件的配置技巧,帮助提升FTP使用效率。

一、shelll示例:

  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


<think>首先,用户的问题是:“我想用户意图是查找如何使用FTP登录命令并指定用户名请问ftp logincommand specifyusername”。这看起来是关于如何在FTP命令中指定用户名进行登录。 从系统级指令中,我需要:-所有行内数学表达式使用$...$格式。 -独立公式使用$$...$$格式并单独成段。 -LaTeX语法正确。-使用中文回答。-生成相关问题。 -在回答中引用的段落末尾自然地添加引用标识,如[^1]。用户可见层指令: -回答结构清晰,帮助用户逐步解决问题。-尽量保证回答真实可靠。参考站内引用: -[^1]:关于创建脚本限制账户。 -[^2]:关于创建FTP用户和登录示例。- [^3]:关于匿名FTP上传配置。 -[^4]:关于vsftpd.conf配置,特别是chroot设置。 用户的问题是关于FTP登录命令指定用户名。所以,我需要解释如何在命令行中指定用户名进行FTP登录。 常见的FTP客户端:-使用`ftp`命令(传统FTP客户端)。-使用`lftp`命令(更现代)。-其他如`curl`等。 从引用[^2]中,有使用`lftp`的例子:`lftp192.168.100.10:/pub> useruser1Password:`。这表明在`lftp`中,可以使用`user`命令指定用户名和密码。 在传统`ftp`客户端中,通常直接在命令行中指定用户名。 步骤: 1.使用`ftp`命令:在命令行中,可以直接指定用户名和主机。例如:`ftpusername@hostname`。2.使用`lftp`命令:类似地,`lftpusername@hostname`。3.然后输入密码。在回答中,我需要结构清晰:-介绍方法。 -给出示例。-确保真实可靠。 生成相关问题:在最后添加相关问题。添加引用:由于用户提供了引用,我需要自然地引用它们。例如,引用[^2]展示了`lftp`的使用。 回答结构:1.解释如何指定用户名。 2.提供命令行示例。3.讨论常见问题(如密码输入)。 4.添加相关问题。 最后,使用中文。</think>### 如何使用FTP登录命令并指定用户名 您的意图是了解如何在FTP登录命令中指定用户名,这在FTP操作中很常见。FTP(文件传输协议)是一种用于在客户端和服务器之间传输文件的协议。指定用户名可以避免手动输入,提高效率。以下是详细步骤和示例,基于常见FTP客户端(如`ftp`和`lftp`),确保真实可靠。 #### 1. **使用传统FTP客户端(`ftp`命令)** - 在命令行中,直接在URL格式中指定用户名和主机名。命令格式为: ``` ftp username@hostname ``` 系统会提示输入密码。如果服务器使用非标准端口(如2121),可以添加端口号: ``` ftp username@hostname:port ``` - **示例**: - 登录到IP为`192.168.1.100`的服务器,用户名为`user1`: ``` ftp user1@192.168.1.100 ``` 输入密码后,即可访问用户主目录(默认限制在FTP用户家目录中,参考vsftpd配置[^4])。 #### 2. **使用现代FTP客户端(`lftp`命令)** - `lftp`更灵活,支持直接在命令中指定用户名。格式为: ``` lftp username@hostname ``` 或使用`-u`选项指定用户名和密码(密码可省略以手动输入): ``` lftp -u username,password hostname ``` - **示例**: - 登录到`192.168.100.10`,用户名为`user1`(不指定密码): ``` lftp user1@192.168.100.10 ``` 输入密码后,进入用户主目录(如`~`),可查看文件(引用[^2]展示了类似操作): ``` lftp user1@192.168.100.10:~> ls ``` - 带密码登录(不推荐在命令行暴露密码): ``` lftp -u user1,mypassword 192.168.100.10 ``` #### 3. **其他方法** - **匿名登录**:如果服务器支持匿名访问,使用`anonymous`作为用户名,密码任意(通常为空或邮箱): ``` ftp anonymous@hostname ``` 但需服务器配置`anon_upload_enable=YES`以允许上传(引用[^3])。 - **脚本自动化**:在脚本中,使用`echo`传递密码(但注意安全风险): ``` echo -e 'open hostname\nuser username password\nls' | ftp -n ``` 参考类似脚本限制账户的用法(引用[^1])。 #### 注意事项 - **安全性**:避免在命令行中硬编码密码(如`lftp -u user1,password`),因为它可能被系统日志记录。建议手动输入密码或使用SSH密钥。 - **目录限制**:FTP用户默认被限制在主目录(chroot),无法访问系统其他文件(参考`vsftpd.conf`的`chroot_local_user=YES`设置[^4])。 - **错误处理**:如果登录失败,检查用户名拼写、服务器状态或防火墙设置。常见错误包括“530 Login incorrect”。 通过以上方法,您可以高效指定用户名进行FTP登录。如果您提供更多细节(如操作系统或FTP服务器类型),我可以进一步优化建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值