blog » Linux » 如何使用netrc文件进行自动ftp

如何使用netrc文件进行自动ftp

FTP是大家常用的命令之一。每次使用总是要修改传输字符类型等等设置。那么可不可以简化其中的一些操作呢?可以,通过设置.netrc文件有效的进化ftp命令的复杂度。

例如,在自己的home目录下建立一个权限600,名为.netrc的文件,内容是:

machine 192.168.0.1 login test password test

这样以后你每次ftp 192.168.0.1的时候,系统都会帮你以用户名test,密码test登录。

利用这个特征可以实现自动ftp。

例如你想要每天5:00到192.168.0.1机器上面获得/test目录下的文件test.txt,可以这么做:
建立一个文件ftp_cmd,内容为:

cd test
get test.txt
bye

然后使用crontab -e设置定时任务:

0 5 * * * ftp 192.168.0.1 < ftp_cmd

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

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
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主机sunsite.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参数加 以取消。

其他FTP相关的命令:

FTP> append
使用当前文件类型设置将本地文件附加到远程计算机上的文件。
格式:append local-file [remote-file]
说明:
local-file
指定要添加的本地文件。

remote-file
指定要添加 local-file 的远程计算机上的文件。如果省略了 remote-file,本地文件名将被用作远程文件名。

FTP> ascii
将文件传送类型设置为默认的 ASCII。
说明:FTP 支持两种文件传送类型,ASCII 码和二进制图像。在传送文本文件时应该使用ASCII。

FTP> bell
切换响铃以在每个文件传送命令完成后响铃。默认情况下,铃声是关闭的。

FTP> binary(或bi)
将文件传送类型设置为二进制。

FTP> bye(或by)
结束与远程计算机的 FTP 会话并退出 ftp。

FTP> cd
更改远程计算机上的工作目录。
格式:cd remote-directory
说明:remote-directory 指定要更改的远程计算机上的目录。

FTP> close
结束与远程服务器的 FTP 会话并返回命令解释程序。

FTP> debug
切换调试。当调试打开时,发送到远程计算机的每个命令都打印,前面是字符串“>”。默认情况下,调试是关闭的。

FTP> delete
删除远程计算机上的文件。
格式:delete remote-file
说明:remote-file 指定要删除的文件。

FTP> dir
显示远程目录文件和子目录列表。
格式:dir [remote-directory] [local-file]
说明:remote-directory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。Local-file 指定要存储列表的本地文件。如果没有指定,输出将显示在屏幕上。

FTP> disconnect
从远程计算机断开,保留 ftp 提示。

FTP> get
使用当前文件转换类型将远程文件复制到本地计算机。
格式:get remote-file [local-file]
说明:
remote-file
指定要复制的远程文件。

Local-file
指定要在本地计算机上使用的名称。如果没有指定,文件将命名为 remote-file。

FTP >glob
切换文件名组合。组合允许在内部文件或路径名中使用通配符(*和?)。默认情况下,组合是打开的。

FTP >hash
切换已传输的每个数据块的数字签名 (#) 打印。数据块的大小是2048 字节。默认情况下,散列符号打印是关闭的。

FTP >help
显示 ftp 命令说明。
格式:help [command]
说明:command 指定需要有关说明的命令的名称。如果没有指定 command,ftp 将显示全部命令的列表。

FTP >lcd
更改本地计算机上的工作目录。默认情况下,工作目录是启动 ftp 的目录。
格式:lcd [directory]
说明:directory 指定要更改的本地计算机上的目录。如果没有指定directory,将显示本地计算机中当前的工作目录。

FTP >literal
将参数逐字发送到远程 FTP 服务器。将返回单个的 FTP 回复代码。
格式:literal argument [ …]
说明:argument 指定要发送到 FTP 服务器的参数。

FTP >ls
显示远程目录文件和子目录的缩写列表。
格式:ls [remote-directory] [local-file]
说明:remote-directory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。 local-file 指定要存储列表的本地文件。如果没有指定,输出将显示在屏幕上。

FTP >mdelete
删除远程计算机上的文件。
格式:mdelete remote-files [ …]
说明:remote-files 指定要删除的远程文件。

FTP >mdir
显示远程目录文件和子目录列表。可以使用 mdir 指定多个文件。
格式:mdir remote-files [ …] local-file
说明:
remote-files
指定要查看列表的目录。必须指定 remote-files。请键入 – 使用远程计算机上的当前工作目录。

local-file
指定要还原列表的本地文件。请键入- 在屏幕上显示列表。

FTP >mget
使用当前文件传送类型将远程文件复制到本地计算机。
格式:mget remote-files [ …]
说明:remote-files 指定要复制到本地计算机的远程文件。

FTP >mkdir
创建远程目录。
格式:mkdir directory
说明:directory 指定新的远程目录的名称。

FTP >mls
显示远程目录文件和子目录的缩写列表。
格式:mls remote-files [ …] local-file
说明:
remote-files 指定要查看列表的文件。必须指定 remote-files;
请键入- 使用远程计算机上的当前工作目录。

local-file 指定要存储列表的本地文件。请键入 – 以在屏幕上显示列表。

FTP >mput
使用当前文件传送类型将本地文件复制到远程计算机上。
格式:mput local-files [ …]
说明:local-files 指定要复制到远程计算机的本地文件

FTP >open
与指定的 FTP 服务器连接。
格式:open computer [port]
说明:computer 指定要连接的远程计算机。可以通过 IP 地址或计算机名称指定计算机(DNS 或主机文件必须可用)。如果自动登录打开(默认),ftp 还将尝试自动将用户登录到 FTP 服务器port 指定用来联系 FTP 服务器的端口号。

FTP >prompt
切换提示。
如果关闭提示时 mget 及 mput 传送所有文件,
Ftp在多文件传送过程中将提示允许您有选择地检索或存储文件。
默认情况下,提示是打开的。

FTP >put
使用当前文件传送类型将本地文件复制到远程计算机上。
格式:put local-file [remote-file]
说明:local-file 指定要复制的本地文件。
remote-file 指定要在远程计算机上使用的名称。如果没有指定,文件将命名为 local-file。

FTP >pwd
显示远程计算机上的当前目录。

FTP >quit
结束与远程计算机的 FTP 会话并退出 ftp。

FTP >quote
将参数逐字发送到远程 FTP 服务器。将返回单个的 FTP 回复代码。
Quote 与 literal 相同。
格式:quote argument [ …]
说明:argument 指定要发送到 FTP 服务器的参数。

FTP >recv
使用当前文件传送类型将远程文件复制到本地计算机。Recv 与 get相同。
格式:recv remote-file [local-file]
说明:remote-file 指定要复制的远程文件。
local-file 指定要在本地计算机上使用的名称。如果没有指定,文件将命名为 remote-file。

FTP >remotehelp
显示远程命令帮助。
格式:remotehelp [command]
说明:command 指定需要帮助的命令的名称。如果没有指定 command,ftp将显示全部远程命令的列表。

FTP >rename
重命名远程文件。
格式:rename filename newfilename
说明:filename 指定要重命名的文件。 newfilename 指定新的文件名。

FTP >rmdir
删除远程目录。
格式:rmdir directory
说明:directory 指定要删除的远程目录的名称。

FTP >send
使用当前文件传送类型将本地文件复制到远程计算机上。Send 与put 相同。
格式:send local-file [remote-file]
说明:local-file 指定要复制的本地文件。 remote-file 指定要在远程计算机上使用的名称。如果没有指定,文件将命名为 local-file。

FTP >status
显示 FTP 连接和切换的当前状态。

FTP >trace
切换数据包跟踪。Trace 在运行 ftp 命令时显示每个数据包的路由。

FTP >type
设置或显示文件传送类型。
格式:type [type-name]
说明:type-name 指定文件传送类型。默认设置为 ascii。如果没有指定type-name,将显示当前的类型。

FTP >user 指定远程计算机的用户。
格式:user username [password] [account]
说明:user-name 指定登录到远程计算机所使用的用户名。password 指定 user-name 的密码。如果没有指定,但必须指定,ftp 会提示输入密码。
account 指定登录到远程计算机所使用的帐户。如果没有指定account,但是需要指定,ftp 会提示您输入帐户。

FTP >verbose 切换 verbose 模式。如果打开,将显示所有 ftp 响应。在文件传送完成后,将同时显示与传送效率有关的统计信息。默认情况下,verbose 是打开的。

This post has already been read 2218 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论