【发布时间】:2014-02-20 15:44:46
【问题描述】:
我们想在 BASH 中捕获一个文件列表(无论是 1 个还是多个),评估文件是否已更改..
- 如果文件已更改/更新
- 删除之前下载的文件
- 下载新文件
- 通知一组人(做)
我看过这个.. save the result of ls command in the remote sftp server on local machine
但是,对于我们想要做的事情,似乎无法正常工作..
环境
LINUX:RedHat (2.6.xx-xxx.x.x.xxx)
SFTP:
- SFTP(1) BSD 通用命令手册
- SFTP 协议版本 3
使用上面的链接:
sftp account@0.0.0.0
expect "password:"
send "somepass\n";
set file [open /home/checks/sftp_files w]
send "ls /home/sftp_server_location/*.zip\n"
log_file
interact
我一直在读到人们在使用 SFTP 创建文件列表时遇到了问题。FTP - 来看看,没有这个问题。
我们已经在 Windows 下使用 WinSCP 执行此操作,并且工作正常。
但是,它所在的系统和数据中心正在关闭,我们需要在 LINUX 机器上获取它..
在 Windows 上,我们正在做一个高级别的:
Windows Scheduled Task that runs daily
To create a list of files beforehand: dir "d:\Downloads\*.gz" /B/S > D:\scripts\OLDLIST.TXT
Pause for 1 second: PING 127.0.0.1 -w 1000 > NUL
Run a script for WinSCP: cscript /nologo D:\scripts\somscript.js
Pause for 1 second: PING 127.0.0.1 -w 1000 > NUL
Create a list of files after: dir "d:\GEO_IP_Downloads\*.gz" /B/S > D:\scripts\NEWLIST.TXT
Pause for 1 second: PING 127.0.0.1 -w 1000 > NUL
Run a FC (File Compare):
%windir%\system32\FC /B D:\scripts\NEWLIST.TXT D:\scripts\OLDLIST.TXT | %windir%\system32\FIND /i "FC: D:\SCRIPTS\NEWLIST.TXT longer than D:\SCRIPTS\OLDLIST.TXT"
If there is a new file found, then e-mail:
IF NOT ERRORLEVEL 1 d:\SCRIPTS\BLAT.exe -body "New file(s) have been found at Vendor" -f somebody@fisglobal.com -to sombodyelse@fisglobal.com -server 1.2.3.4 -subject "New file(s) have been found at company" -q
WinSCP 来自 – https://winscp.net
我们使用的具体脚本来自–
https://winscp.net/eng/docs/script_download_most_recent_file#scripting
【问题讨论】: