免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18392 | 回复: 2
打印 上一主题 下一主题

[FTP] 各种文件传输协议客户端命令详解完整版TFTP/SFTP/FTP--包含linux和windows [复制链接]

论坛徽章:
24
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2016-07-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-09 09:13 |只看该作者 |倒序浏览
本帖最后由 woxizishen 于 2015-03-09 09:22 编辑

TFTP客户端命令详解:linux下tftp0.40 客户端操作命令

connect         connect to remote tftp          连接到其他远程tftp服务器   
mode            set file transfer mode          显示传输模式(如:二进制模式或ascii文本模式)
put             send file                       put any(local path files) remote path files    (一般无法更改远程路径,被tftp服务器限制了指定的访问路径)
传送任何本地文件到远程tftp服务器指定的路径里。
get             receive file                    get remote path files any(local path files)     
获取tftp服务器指定的路径里的文件存放到本地任何位置里。

#注意:
1.不管是远程好还是本地好,最后路径结尾的必须是文件名称。不支持目录传送。
2.传送文件大小限制为32MB以内。超过了无法传送。tftp本身协议规定。
3.指定远程tftp服务器的路径时,不要将tftp服务器的共享路径输入进来。
如:假设tftp服务器共享的访问路径限制为/tftpboot。
如想获取/tftpboot下面更下层目录winxp的文件或把文件存放到/tftpboot/winxp目录下时
只需要指定路径为winxp/xx文件名称即可。


quit            exit tftp                         (ftp,sftp通用退出命令)
verbose         toggle verbose mode           切换到纤细模式(也就是显示发送或接收tftp服务器的地址以及文件存放或获取位置路径而已。)
trace           toggle packet tracing             切换到包跟踪模式(也就是查看发送包的过程,会显示你发送或接收的是什么文件名称以及以什么模式发送或接收的)
status          show current status             显示当前传送模式以及包传送超时的时间等等而已
binary          set mode to octet                 设定二级制传送
(传送执行程序,jpg图片,压缩档等等)
ascii           set mode to netascii              设定ascii传送
(传送文本,html网页等等)
rexmt           set per-packet transmission timeout 每个包重传的超时时间
timeout         set total retransmission timeout    整个包重传的超时时间。
?               print help information             帮助(同SFTP,FTP命令一模一样)
help            print help information             帮助(同SFTP,FTP命令一模一样)


##如果要使用非交互式做shell脚本使用(网上很多文章贴来贴去说tftp没有交互式操作是错误的,都已经过时了,现在新版本tftp客户端是有交互式操作的。),参照以下命令参数:
tftp [-v][-m mode] [host [port]] [-c command]
-v 显示详细报告。可有可无,查错时可使用。
-m 使用哪种模式传送 –m binary (使用二级制模式)
host  tftp服务端ip地址或主机名称
port 未输入则使用默认UDP端口69传送或接收数据。
-c 下达各个命令
范例
tftp -v -m binary 172.16.9.15 2 -c get 333.exe
保存为shell脚本,则直接将333.exe文件传送到当前目录下。














windows tftp客户端所有命令:
(tftp.exe支持所有windows-32bit系统操作)
-i 使用二级制传送 不使用该参数就是ascii模式传送


host  ip地址或主机名称

get 同linux版本的get命令一样。
put 同linux版本的put命令一样。

只有非交互式的操作,也即只能做bat等脚本使用。


备注:TFTP虽然已经是过时的协议的,但是很多应用领域仍然有他你懂的,不说别的了,就PXE














SFTP客户端命令详解:
交互非交互都支持。
Windows下使用putty官方拆分出来的psftp即可连接任何linux操作系统。绝大部份linux操作系统默认是安装ssh服务端。Sftp服务端是ssh服务端的一部份。
范例脚本非交互式操作:
@echo off & cd /d d:\ & mkdir backup

echo lcd backup >>6.txt
echo mget * >>6.txt
psftp 172.16.9.15 -l root -pw kbgroup007 < 6.txt

-l :使用登陆sftp的账号、
-pw 使用登陆的密码。
默认登陆后,是直接登陆到用户的家目录下,如果用root登陆,则可以访问任何路径。


Linux下sftp客户端并不提供非交互的命令。使用scp可以实现,如果非要用sftp命令来实现,需要用到expect。
#!/usr/bin/expect
##
## 用expect模拟sftp上传文件
## created by yejr(imysql AT imysql.cn),2008/11/20
##
#取得传递参数,构造变量
set DT [lindex $argv 0]
set NU [lindex $argv 1]
set ftp_lcd "/dbbak/$DT/$NU"
#查看本地文件
send "ls -la $ftp_lcd\r"
#发送命令
send "cd $ftp_lcd\r"
#发起sftp
spawn sftp yejr@192.168.0.84
expect "yejr@192.168.0.84's password:"
#发送密码
send "abccba"
expect "sftp>"
#设定lcd
send "lcd $ftp_lcd\r"
expect "sftp>"
#上传文件,这里不知为何无法使用mput
send "put $ftp_lcd/dbbak*$DT*.sql.gz.md5\r"
expect "sftp>"
send "put $ftp_lcd/dbbak*$DT*.sql.gz\r"
expect "sftp>"
#列文件,确认大小没问题
send "ls -la\r"
expect "sftp>"
#bye bye
send "bye\r"
interact












pwd                         显示远程目标路径
lpwd                         显示本地目标路径
ls                           显示远端目录列表
cd path                      更改远端目录路径
lcd path                      更改本地目录路径
ren                         更改远端ftp服务器的档案名称或移动档案
mv                         功能同上


mkdir path                    创建远端文件夹
lmkdir path                   创建本地文件夹
rmdir path                    删除远端目录
rm path                      删除远端文件,支持通配符*删除当前目录所有文件,慎重使用。
help                          帮助

get remote-path [local-path]  和ftp/tftp功能一样不做解释
rget                          同ftp一样支持断点续传
mget                      不需要像ftp那么麻烦,直接支持通配符*路径操作。
注意:在从linux下复制多个文件到windows下的指定目录时,还是老实在前面用lcd来切换路径吧,直接在mget后面指定的路径不起作用。

quit          直接退出sftp连接到shell界面或cmd命令
exit          直接退出sftp连接到shell界面或cmd命令
bye           直接退出sftp连接到shell界面或cmd命令
!             断开sftp连接仍在交互界面
close         断开sftp连接仍在交互界面





















FTP客户端命令详解:
脚本下常用的命令
在linux和windows下都可以轻松实现非交互式操作,即用脚本对FTP服务端作任何操作。
Windows下非交互式操作(bat脚本)。
格式:
ftp 参数 存放ftp命令的文本 ftp服务端ip
范例:
ftp -ni  -s:d:\33.txt 172.16.4.36
::在33.txt里存放你任何想执行的ftp命令。:
::-n 不自动登录
::-i 关闭交互


Linux下非交互式操作(shell脚本):
host="172.16.4.36"
username="ati"
password="pwforati"
ftp -ni $host << EOF
     quote USER $username
     quote PASS $password
::上面是逐字传送账号和密码。Linux下专用。
中间输入你任何想操作的ftp客户端命令
     EOF

linux下的-n 表示不读取用户目录下的.netrc的设定(ftp客户端默认会读取.netrc里面的设定进行连接)



$   (脚本常用,重要)
做变量使用。(就类似dos里面定义的变量了,一般用在非交互式的脚本里)
如:set a=33
echo %a% 显示数值就是
33
这里的$就是那个百分号作用一样。当然和linux操作系统里面的$作用是一模一样的。

macdef 定义宏变量


glob 官方翻译是允许使用扩展文件名(无语的翻译)  (脚本常用,重要。默认是开启的,不需要改动)
作用就是允许在路径当中使用通配符功能。如*或?.不使用此参数无法使用这些通配符的。


quote   逐字将命令参数传送到ftp服务器 (非交互模式下脚本常用,重要)

如:
quote USER dawson  将使用dawson用户进行登录验证。
quote PASS 123456  将使用123456密码进行密码核对。

这样的话就类似你在交互模式下手输用户名和密码登录FTP服务器进行验证效果一样。


-i    关闭交互模式(脚本常用,重要),也就是直接在脚本里使用命令传送和接收数据了,没有任何交互操作了。




proxy 建立副连接。当和第一个ftp服务器连接的时候就是主连接,如果在使用proxy open 172.16.9.xx 建立的连接就是副连接。
(通俗的说就是你用一个ftp客户端登陆到2台ftp服务器里面拉。进行的操作是2台ftp服务器之间的操作,和你ftp客户端所在的主机没有任何关系。)
命令格式:proxy ftp-command。也就是前面出现proxy的参数,就是在副连接上面执行的命令
范例:
ftp 172.16.9.15
输入账号和密码后
这样172.16.9.15就是主连接了。

然后:
proxy open 172.16.9.62
输入账号和密码后
这样172.16.9.62就是副连接了。

proxy get 12.sh
执行的操作就是将9.62ftp服务器上的数据传送到9.15这台ftp服务器上。
(proxy功能 linux下专用。windows暂时未发现版本有)



append       传送或附加一个文件的内容到远程的文件中。(脚本可能用到统计日志或其他功能,一般)
##当用append传送一个文件到ftp服务器中,如果ftp服务器没有这个文件,则传送过去的效果和put是一模一样的。
##当用append传送一个文件到ftp服务器中,如果ftp服务器有这个文件一模一样的名称,则传送过去的话会将内容附加到ftp服务器当中已存在的那个同名文件里。而put整好相反则是直接覆盖噢。
##所以append就类似文本导入命令>>的功能附加的意思,而put则是>覆盖的意思。



prompt          关闭mput和mget和mdelete的交互模式。默认是开启交互模式功能(脚本常用,重要)


关闭mput和mget的交互模式。默认是开启交互模式功能,既如果用mput和mget传送或接收多个文件时,每一次都要提示你。所以当要在脚本里使用mput命令时或同时传送多个文件时,不需要总是提示你

的时候,就关闭他即可。直接执行prompt,即可关闭mput和mget交互功能。

case            将远程服务器的大写文件名称改成小写存放到本地(脚本常用,重要)
#言外之意即使远程ftp服务器上存放的是以大写命名的文件,但你get或mget接收的时候直接输入小写即可,存放的地方也会是小写。


runique          开启此功能,将轮询给相同获取到的档案命名。(脚本常用,重要,可以轮询保存ftp服务器的文件到本地。)
                 通过get或mget命令获取文件到本地时,如果发现本地有相同的文件名称,则另存为同名的档案并加上一个.1 , .2  ,.3等等的扩展名

(linux ftp客户端专用)
sunique          官方解释是与runique对于。测试没撒意义,就是覆盖相同的文件。测试版本0.39(不知)


newer             同步更新参数。官方解释是比较修改时间,如果远程服务器修改时间为最新的则同步,经测试完全不是这么回事。测试版本为0.39版。无论远程修改的时间为新还是旧,都将文件覆盖到本地上来。如果新版本还有此bug,则此参数可以完全忽略。get本身就有此覆盖功能。


type     设置传输数据类型,如直接输type,则是查看当前传输方式,type ascii 设置传输方式为ascii。可以忽略此命令。设定数据类型直接输入即可改变类型。
binary       程序,图片,压缩档案等等二级制方式传输
image       设置二进制数据类型传输(同binary)。
ascii         html,文本等等数据传输
cr           html,文本等等数据传输
tenex             设置文件传输方式为与 TENEX 机器通讯所需要的方式(不知用途)
                       

传送接收删除命令
传送
mput              传送多个本地文件到远程ftp服务器上.支持通配符*操作。
put               传送单个本地文件到远程ftp服务器上
send              传送单个本地文件到远程ftp服务器上

接收
mget              从远程ftp服务器获取多个文件    支持通配符操作如*
get               从远程ftp服务器获取文件
reget             从上次中断的时候续传。就类似断点续传啦。
recv              从远程ftp服务器获取文件

删除
delete            删除单个文件
mdelete           删除多个文件,可以使用通配符进行模糊删除,但每删除一个文件都会提示确认,需使用prompt关闭交互即可不再提示确认。
rmdir         删除目录
mkdir         建立目录




open               进入ftp交互模式后,打开一个连接远程ftp服务器的请求
disconnect         断开连接
close              断开连接


      

hash         每传输1024字节,显示一个hash符号(#)。就相当于一个进度条而已。
cd           切换远程磁盘路径
lcd          切换本地磁盘路径(凡是开头带l的都是与本地有关系)
cdup         切换目录到上一层
mdir         显示ftp服务器多个目录里面文件列表
dir          显示ftp服务器当前目录列表
ls           显示ftp服务器当前目录列表
nlist        显示ftp服务器当前目录列表 (无语了,三个命令效果几乎差不多)
mls          将指定FTP服务器路径的目录列表存到本地ftp客户端电脑上。
size         查看远程指定文件大小
pwd          查看远程当前目录路径
status       查看本地ftp客户端的状态信息
rstatus      查看远程ftp服务器的状态信息(linux下ftp客户端专用,新版windows ftp客户端不知是否有更新此功能)
rename       给远程ftp服务器上的文件重新命名。格式rename 远程文件名称a  修改为远程文件名称b  
verbose      显示详细传输报告.默认开启。不用管。
trace        传输数据包信息跟踪,默认关闭。就是多一些传输报告而已。例如,使用被动还是主动模式,传送到哪个ip啊等等

            
idle          设定远程ftp服务器最长空闲时间,超过空闲时间自动断开客户端。(有些ftp服务器不支持该命令。)不加任何参数,是显示远程ftp服务器默认最长空闲时间。

passive       切换成被动传输模式。默认是主动模式。

restart         


clear                    
private                        
cprotect            
protect         
safe
设定以上5个级别的保护数据传输。



nmap           设置或取消文件名映射机制
ntrans         设置或取消文件名字符转换机制



bell         每个命令执行完毕后计算机响铃一次
form           文件传输格式设置为 format. 缺省格式为 “file non-print"
struct         设置传输数据结构:structure
mode           设置传输模式,默认stream(一般不需要更改啦。)需要更改则mode 传输模式
以上三部份一般无法更改,默认即可。

reset         清楚应答队列,当远程ftp服务器和ftp客户端发生协议错误时,可能会使用到此命令。  
umask         设置远端机器上的文件掩码为netmask(linux上专用,windows的ftp服务器无法使用)
chmod         将远端系统上文件 file-name 的权限改为 mode (linux上的ftp服务器用,windows上的ftp服务器无法使用,会直接提示无法理解此命令。很少用)
ccc           关闭命令通道保护,关闭此保护,一些攻击者会插入命令到该命令通道里。一般不建议关闭。而且有些ftp服务器直接就拒绝你发送的这条命令。   (不常用,不用理会)
modtime      (linuxftp客户端专用)显示时间是GMT和北京时间相差8小时。--不常用。
system       (linuxftp客户端专用)显示远程操作系统-无实际作用,登陆成功时候就有显示了。--不常用。      
sendport      ftp客户端每建立一个连接进行数据传送时, 都会使用一个 PORT 命令。缺省是使用port命令。某些情况下,某些版本ftp忽略了port命令,而应答时显示已接收port命令,此时应该禁用
debug         当 debigging 状态为 on 时, ftp 会显示每条送往远端机器的指令,并在显示的指令前加上 ‘-->’   
account       提供登录远程系统成功后访问系统资源所需的补充口令。







TYPE: ASCII, FORM: Nonprint; STRUcture: File; transfer MODE: STREAM
传输数据类型:ascii  传输数据结构:structure  传输模式:stream

?                   帮助
help                帮助
rhelp               帮助(linux ftp客户端专用)去向远程ftp服务器请求解释你后面跟的命令,如果直接敲入rhelp,则返回远程服务器所有已知的命令。
!
quit
bye
以上都是退出命令

论坛徽章:
0
2 [报告]
发表于 2015-04-14 08:49 |只看该作者
同意LZ,赞同LZ

论坛徽章:
0
3 [报告]
发表于 2015-04-14 20:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP