ncftp从服务器获取文件举例,Windows 使用NcFTP自动登录上传文件

为了将服务器上的日志(主要是IIS日志)上传到远程日志分析服务器上,我在存储上划分了一块区域,挂载到FTP服务器上,为了能让服务器在自动完成上传日志文件的工作,我使用FTP批处理脚本做了一个自动登录到远程服务上,并完成上传文件的批处理文件uploadLog.bat:

echo off

rem 此脚本用于测试Window下FTP自动登录服务并上传文件

echo 初始化必要参数

set serverIP=192.168.*.*

set userName=**

set passWD=**

set fileName=%date:~0,4%%date:~5,2%%date:~8,2%

echo 在当前目录创建一个100M左右大小的测试文件,文件以当前日期命名

fsutil file createnew %fileName% 102400000

echo open %serverIP% >temp.txt

echo %userName%>>temp.txt

echo %passWD%>>temp.txt

echo bin>>temp.txt

echo put %fileName% %fileName% >>temp.txt

echo bye>>temp.txt

echo 正在将测试文件上传到远程服务器上,请稍等。。。

ftp -s:temp.txt

echo 测试文件已经成功上传到服务器上

echo 删除临时文件

del /q /f %fileName%

del /q /f temp.txt

echo 此测试脚本测试完成

pause

end

8782e94c9789b104abdb2bd56dbc5909.png

于是在网上找Windows下的可用于命令行的FTP客户端,最终发现了NcFTPclient,官网网址:http://www.ncftp.com,它是一款非常优秀免费的跨平台FTP客户端,关于它的使用可以参考这篇文章,http://www.ibm.com/developerworks/cn/aix/library/au-ncftp_flex/,其提供的ncftpput命令很容易实现文件的上传,而且其官方提供的msi安装包也很容易在网络中部署。接下来使用ncftpput实现文件的上传,修改后的uploadLog.bat:

echo off

rem 此脚本用于测试Window下FTP自动登录服务并上传文件

echo 初始化必要参数

set serverIP=192.168.*.*

set userName=**

set passWD=**

set fileName=%date:~0,4%%date:~5,2%%date:~8,2%

echo 在当前目录创建一个100M左右大小的测试文件,文件以当前日期命名

fsutil file createnew %fileName% 102400000

echo 正在将测试文件上传到远程服务器上,请稍等。。。

ncftpput -u %userName% -p %passWD% %serverIP% . %fileName%

echo 测试文件已经成功上传到服务器上

echo 删除临时文件

del /q /f %fileName%

echo 此测试脚本测试完成

pause

end

是否觉得非常简单明了,而且在上传的过程中可以实时看到文件上传的进度,上传的结果如图:

6d27a4d52006e0f36a71e73c5609cdb7.png

在测试的过程中即使是上传上GB的大文件上传时也很稳定,暂时没有发现问题,接下来我会在实际的生产环境中以这种方式实现日志文件的上传工作。