交互命令下FTP
一般状况下, 我们使用FTP 到某台机器上进行文件上传、下载的操作,
在命令方式下,基本上是:
1.ftp 主机名 2.输入用户名 3. 输入密码 4. 切换模式(asc 或者是 bin) 5. 上传或下载(put 或者是 get) 6. 退出(bye or quit)
如果使用一些FTP 工具的话, 操作起来就更简单了。
ftp 批处理脚本
如果我们要定期的自动做一些FTP的动作的话, 可以写一个批处理档, 放到Windows 的Task 中定期执行。
这种思路的一般解法是:写两个批处理文件, 一个是主批处理,用来调用FTP; 另外一个是ftp 操作的批处理(这个文件的后缀名可以随意)。
这里的实例的两个文件是:main.bat ; ftptmp.bat
main.bat 的内容就很简单:
ftp -n -s:"ftptmp.bat"
ftptmp.bat的内容如下:
dsdsdfafaf open $ftphost user $username $password cd $filepath get $filename bye exit
注意:命令中的变量需自行替换。
带参数的脚本
像以上的变量, 可能并不是一开始就决定的, 这部分需要动态的通过变量的方式传递进去。
想一想, Windows 的 .bat 脚本执行的时候,可以在后面直接加上一些参数, 在脚本中通过 %0%, %1%这样的方式获取。
举个例子, 以上执行main.bat 时,如果在命令行输入:
main.bat 111 222 333
则在main.bat 的脚本文件中
%0% 对应的是 main.bat
%1% 对应的是 111
……
看例子:
@echo off echo %0%>>main.log echo %1%>>main.log
ftp -n -s:”ftptmp.bat”
现在的问题是: ftptmp.bat 这个文件中 ftp 的脚本中并不能获取bat 设置的变量。
所以, 想一想解决思路可以是: 使用 main.bat 临时产生ftptmp.bat这个文件(变量替换成传入的值)
文件类似:
@echo off echo open %1%>>>ftptmp.bat echo user %2% %3%>>ftptmp.bat echo cd %4%>>ftptmp.bat echo get %5%>>ftptmp.bat echo bye>>ftptmp.bat echo exit>>ftptmp.bat ftp -n -s:ftptmp.bat
调用的时候:
main.bat host username password filepath filename
参考
ftp [-v] [-d] [-i] [-n] [-g] [-s:FileName] [-a] [-w:WindowSize] [-A] [Host]
参数:
-v:禁止显示远程服务器响应。
-d:启用调试、显示在客户端和服务器之间传递的所有ftp命令。
-i:多个文件传送时关闭交互提示。
-n:禁止自动登录到初始连接。
-g:禁用文件名组,它允许在本地文件和路径名中使用通配符字符(*和?)。
-s:FileName:指定包含ftp命令的文本文件;当ftp启动后,这些命令将自动运行。该参数中不允许有空格。使用该开关而不是重定向(>)。
-a:在捆绑数据连接时使用任何本地接口。
-w:WindowSize:替代默认大小为4096的传送缓冲区。
-A:匿名登陆。
Host:指定要连接到远程计算机的计算机名或IP地址。如果指定,计算机必须是最后一个参数。
简单批处理内部命令简介
1.echo 命令
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。
2.@ 命令
表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite…
@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)
3.goto 命令
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。
4.Rem 命令
注释命令,在C语言中相当与/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
Rem Message
Sample:@Rem Here is the descr1ption.
5.Pause 命令
运行 Pause 命令时,将显示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d:back
echo Please put a new disk into driver A
pause
goto begin
在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按我饧 绦 怼?
6.Call 命令
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
语法
call [Drive:][Path] FileName [BatchParameters] [:label [arguments]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
7.start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
入侵常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数
执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
ftp命令详解
1 !
Escape to the shell.
从 ftp 子系统临时退出到命令提示符下。
要返回到 ftp 子系统,请在命令提示符下键入 exit。
语法:!
2 append
Append to a file
使用当前文件类型设置将本地文件附加到远程计算机上的文件。
语法:append LocalFile [RemoteFile]
3 ascii
Set ascii transfer type.
设定以ASCII方式传送文件(缺省值)
语法:ascii
4 bell
Beep when command completed
每个文件传输命令执行完后,将会切换到一个可听见的声音。
语法:bell
5 binary
Set binary transfer type
设定以二进制方式传送文件。
语法:binary
6 bye
Terminate ftp session and exit.
终止主机FTP进程,并退出。
语法:bye
7 cd
Change remote working directory.
更改远程计算机上的工作目录。
语法:cd RemoteDirectory
8 close
Terminate ftp session
结束与远程服务器进行的 FTP 会话,并停留在 ftp> 提示符下。
语法:close
9 delete
Delete remote file.
删除远程计算机上的文件。
语法:delete Remotefile
10 dir
List contents of remote directory
显示远程计算机上的目录文件和子目录列表。
语法:dir [remote-directory] [local-file]
11 disconnect
Terminate ftp session.
从远程计算机断开连接,同时保留 ftp> 提示符。
语法:disconnect
12 get
Receive file.
使用当前文件传送类型将远程文件复制到本地计算机。
语法:get [remote-file] [local-file]
13 glob
Toggle metacharacter expansion of local file names.
切换本地文件名的通配符扩展。
语法:glob
14 hash
Toggle printing `#‘ for each buffer transferred.
切换已传输的每个数据块的数字签名 (#) 打印。
语法:hash
15 help
Print local help information.
显示 ftp 子命令说明。
语法:help [Command]
16 lcd
Change local working directory.
更改本地计算机上的工作目录。默认情况下,工作目录是启动ftp的目录。
语法:lcd [directory]
17 literal
Send arbitrary ftp command.
将参数逐字发送到远程 FTP 服务器。单一 FTP 答复代码返回。
语法:literal Argument [ …]
18 ls
List contents of remote directory.
在远程目录上显示文件简短目录和子目录。
语法:ls [RemoteDirectory] [LocalFile]
19 mdelete
Delete multiple files.
删除远程计算机上的多个文件。
语法:mdelete RemoteFiles [ …]
20 mdir
List contents of multiple remote directories.
显示远程目录中的文件和子目录列表。
语法:mdir RemoteFiles [ …] LocalFile
21 mget
Get multiple files.
使用当前文件传送类型将远程多个文件复制到本地计算机。
语法:mget RemoteFiles [ …]
22 mkdir
Get multiple files
创建远程计算机上的目录。
语法:mkdir directory
23 mls
List contents of multiple remote directories.
在远程目录上显示文件简短目录和子目录。
语法:mls RemoteFiles [ …]LocalFile
24 mput
Send multiple files.
使用当前多个文件传送类型将本地文件复制到远程计算机上。
语法:mput LocalFiles [ …]
25 open
Connect to remote tftp.
与指定的 FTP 服务器连接。
语法:open Computer [Port]
26 prompt
Force interactive prompting on multiple commands.
在 prompt 的开模式和关模式之间切换。
语法:prompt
27 put
Send one file.
使用当前一个文件传送类型将本地文件复制到远程计算机上。
语法:put LocalFile [RemoteFile]
28 pwd
Print working directory on remote machine.
打印远程计算机上的当前目录。
语法:pwd
29 quit
Terminate ftp session and exit.
结束与远程计算机的 FTP 会话并退出 ftp 到命令提示符下。
语法:quit
30 quote
Send arbitrary ftp command.
将参数逐字发送到远程 FTP 服务器。单一 FTP 答复代码返回。
语法:quote Argument [ …]
31 recv
Receive file.
使用当前文件传送类型将远程文件复制到本地计算机。
语法:recv RemoteFile [LocalFile]
32 remotehelp
Get help from remote server.
显示远程命令的帮助。
语法:remotehelp [Command]
33 rename
Rename file.
重命名远程文件。
语法:rename FileName NewFileName
34 rmdir
Remove directory on the remote machine.
删除远程目录。
语法:mdir Directory
35 send
Send one file.
使用当前文件传送类型将本地文件复制到远程计算机上。
语法:send LocalFile [RemoteFile]
36 status
Show current status.
显示 FTP 连接的当前状态。
语法:status
37 trace
Toggle packet tracing.
切换数据包跟踪。
语法:trace
38 type
Set file transfer type.
设置或显示文件传送类型。
语法:type [TypeName]
39 user
Send new user information
指定远程计算机的用户。
语法:user UserName [Password] [Account]
40 verbose
Toggle verbose mode.
切换 verbose 模式。
语法:verbose
您暂时无权查看此隐藏内容!
评论前必须登录!
注册