LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 26768|回复: 7

自动ftp脚本[ftp命令大全]

[复制链接]
发表于 2003-9-27 16:13:41 | 显示全部楼层 |阅读模式
下面给出两个范例,供大家参考
来自:www.chinaunix.net,
十分感谢作者:deathcult

  1. 1,
  2. #!/bin/sh
  3. F="xxxx.ftp"
  4. echo "open 192.168.7.51 21"     > $F
  5. echo "user username passwd"     >> $F
  6. echo "bin"                      >> $F
  7. echo "cd /home/xxx/"            >> $F
  8. echo "mput $1"                  >> $F
  9. echo "bye"                      >> $F
  10. ftp -i -in < $F
  11. rm -rf $F
  12. 2,
  13. #!/bin/sh
  14. FILE=$1
  15. ftp -i -in <<!
  16. open 192.168.7.9 21
  17. user username password
  18. cd /            
  19. mput $FILE
  20. bye
  21. !
复制代码

3定时ftp脚本:  
转自:linuxfans.org
1.编辑.netrc,增加如下一行:
machine 服务器地址 login 用户名 password 密码
2.编辑一个文件.ftp_cmd,存储ftp命令用:

  1. lcd 本地目录
  2. cd 远端目录
  3. mput *.tbz
  4. bye
复制代码

3.crontab -e,增加一行:
10 4 * * 0 ftp -i < .ftp_cmd


附录:
FTP的命令行格式为:
ftp -v -d -i -n -g [主机名] ,其中

-v 显示远程服务器的所有响应信息;

-n 限制ftp的自动登录,即不使用;.n etrc文件;

-d 使用调试方式;

-g 取消全局文件名。


FTP使用的内部命令如下(中括号表示可选项):

1.![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如:!ls*.zip

2.$ macro-ame[args]: 执行宏定义macro-name。

3.account[password]: 提供登录远程系统成功后访问系统资源所需的补充口令。

4.append local-file[remote-file]:将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名。

5.ascii:使用ascii类型传输方式。
6.bell:每个命令执行完毕后计算机响铃一次。

7.bin:使用二进制文件传输方式。
8.bye:退出ftp会话过程。

9.case:在使用mget时,将远程主机文件名中的大写转为小写字母。

10.cd remote-dir:进入远程主机目录。

11.cdup:进入远程主机目录的父目录。

12.chmod mode file-name:将远程主机文件file-name的存取方式设置为mode,如:chmod 777 a.out。

13.close:中断与远程服务器的ftp会话(与open对应)。

14.cr:使用asscii方式传输文件时,将回车换行转换为回行。

15.delete remote-file:删除远程主机文件。

16.debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命令,如:deb up 3,若设为0,表示取消debug。

17.dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本地文件
18.disconnection:同close。

19.form format:将文件传输方式设置为format,缺省为file方式。

20.get remote-file[local-file]: 将远程主机的文件remote-file传至本地硬盘的local-file。

21.glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名,同命令行的-g参数。

22.hash:每传输1024字节,显示一个hash符号(#)。

23.help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24.idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。

25.image:设置二进制传输方式(同binary)。

26.lcd[dir]:将本地工作目录切换至dir。

27.ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本地文件local-file。

28.macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结束。
29.mdelete[remote-file]:删除远程主机文件。
30.mdir remote-files local-file:与dir类似,但可指定多个远程文件,如 :mdir *.o.*.zipoutfile 。

31.mget remote-files:传输多个远程文件。

32.mkdir dir-name:在远程主机中建一目录。

33.mls remote-file local-file:同nlist,但可指定多个文件名。
34.mode[modename]:将文件传输方式设置为modename, 缺省为stream方式。
35.modtime file-name:显示远程主机文件的最后修改时间。

36.mput local-file:将多个文件传输至远程主机。

37.newer file-name: 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件。
38.nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并存入本地硬盘的local-file。
39.nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输时,文件中的某些字符相互转换, 如:nmap $1.$2.$3[$1,$2].[$2,$3],则传输文件a1.a2.a3时,文件名变为a1,a2。 该命令特别适用于远程主机为非UNIX机的情况。
40.ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans1R,则文件名LLL将变为RRR。

41.open host[port]:建立指定ftp服务器连接,可指定连接端口。

42.passive:进入被动传输方式。

43.prompt:设置多个文件传输时的交互提示。

44.proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open,以首先建立两个服务器间的连接。
45.put local-file[remote-file]:将本地文件local-file传送至远程主机。
46.pwd:显示远程主机的当前工作目录。

47.quit:同bye,退出ftp会话。

48.quote arg1,arg2...:将参数逐字发至远程ftp服务器,如:quote syst.
49.recv remote-file[local-file]:同get。

50.reget remote-file[local-file]:类似于get, 但若local-file存在,则从上次传输中断处续传。

51.rhelp[cmd-name]:请求获得远程主机的帮助。

52.rstatus[file-name]:若未指定文件名,则显示远程主机的状态, 否则显示文件状态。

53.rename[from][to]:更改远程主机文件名。

54.reset:清除回答队列。

55.restart marker:从指定的标志marker处,重新开始get或put,如:restart 130。
56.rmdir dir-name:删除远程主机目录。

57.runique:设置文件名只一性存储,若文件存在,则在原文件后加后缀.1, .2等。

58.send local-file[remote-file]:同put。

59.sendport:设置PORT命令的使用。

60.site arg1,arg2...:将参数作为SITE命令逐字发送至远程ftp主机。

61.size file-name:显示远程主机文件大小,如:site idle 7200。

62.status:显示当前ftp状态。

63.struct[struct-name]:将文件传输结构设置为struct-name, 缺省时使用stream结构。

64.sunique:将远程主机文件名存储设置为只一(与runique对应)。

65.system:显示远程主机的操作系统类型。

66.tenex:将文件传输类型设置为TENEX机的所需的类型。

67.tick:设置传输时的字节计数器。

68.trace:设置包跟踪。

69.type[type-name]:设置文件传输类型为type-name,缺省为ascii,如:type binary,设置二进制传输方式。

70.umask[newmask]:将远程服务器的缺省umask设置为newmask,如:umask 3

71.user user-name[password][account]:向远程主机表明自己的身份,需要口令时,必须输入口令,如:user anonymous my@email。
72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp 服务器的所有响 应都将显示给用户,缺省为on.

73.?[cmd]:同help.
发表于 2003-9-27 16:26:08 | 显示全部楼层
thanks~~~~
发表于 2003-10-8 23:02:05 | 显示全部楼层
有没有自动搜索脚本?
发表于 2003-10-9 10:04:11 | 显示全部楼层

为什么我的.netrc文件里不能用password?

我在solaris和redhat里都试了,.netrc文件如下
machine host login user password pwd
macdef init
...

运行时都说什么密码错误,还打个括号说什么可能是600,怎么也不对,
只有把password和后面的东西删了,它就自动以user login host,
手动输入密码后init就自己运行了。
这时怎么回事?
发表于 2003-10-13 11:57:17 | 显示全部楼层
链接上个一ftp。
但不能ls 说是操作超时。
这可能是网速慢吧??
发表于 2003-10-26 19:57:34 | 显示全部楼层
嗯,是个好贴子,再顶一顶,让更多的人看到。
发表于 2003-10-27 11:37:46 | 显示全部楼层
假如密码是空呢?
我在cygwin里试了试好象不行。。
cat > autoftp.sh
#!/usr/bin/sh
ftp -i -n 192.168.0.1 <<end
user 111 密码为空
ls
end
用sh autoftp.sh执行,然后马上提示我输入密码,由于是空我直接按回车,怎么就直接退出来了?
发表于 2003-11-1 20:16:05 | 显示全部楼层
我也顶一顶吧,下去看看lftp 怎么玩。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表