文章

使用lftp与sftp获取远端文件脚本

因为工作的原因,需要每日使用sftp获取远程主机上的文件,所以就在想能不能脚本化,这样就不用天天定时定点的在服务器前面守着了。

lftp是linux下面的一个ftp客户端工具,使用起来非常方便,它的参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
[zhou@localhost ~]$ lftp -h
Usage: lftp [OPTS] <site>  
`lftp' is the first command executed by lftp after rc files
 -f <file>           execute commands from the file and exit
 -c <cmd>            execute the commands and exit
 --help              print this help and exit
 --version           print lftp version and exit
Other options are the same as in `open' command  
 -e <cmd>            execute the command just after selecting
 -u <user>[,<pass>]  use the user/password for authentication
 -p <port>           use the port for connection
 <site>              host name, URL or bookmark name

那么如何配置sftp使用呢?很简单,只需要lftp -u user,pass sftp://IP:PORT就可以了。

我的脚本是原先用ftp直接取文件进行处理的,后来远程服务器因为FTP漏洞,被迫关闭了FTP端口,只开放了SSH和SFTP,所以脚本就凑合着改了一下,先用起来再说。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
cd /gscbsp/TY  
rm -fr /gscbsp/TY/*.zip  
lftp -u 'agent_ppsf','asd&dfd' sftp://1*5.1*8.*0.*0:1*3*6 <<EOF  
lcd /gscbsp/TY  
mget /cson/agentposfile/0930/*2016*.zip  
mget /cson/agentposfile/0931/*2016*.zip  
mget /cson/agentposfile/0932/*2016*.zip  
mget /cson/agentposfile/0933/*2016*.zip  
mget /cson/agentposfile/0934/*2016*.zip  
mget /cson/agentposfile/0935/*2016*.zip  
mget /cson/agentposfile/0936/*2016*.zip  
mget /cson/agentposfile/0937/*2016*.zip  
mget /cson/agentposfile/0938/*2016*.zip  
mget /cson/agentposfile/0939/*2016*.zip  
mget /cson/agentposfile/0941/*2016*.zip  
mget /cson/agentposfile/0943/*2016*.zip  
mget /cson/agentposfile/0945/*2016*.zip  
mget /cson/agentposfile/0947/*2016*.zip  
close  
bye  
today=`date --date='0 days ago' +%Y%m%d`  
#printf $today >> /gscbsp/get_ty.log 
ls /gscbsp/TY/*.zip | xargs -n1 unzip  
cd /afms/bestpay  
find . -name "*.zip"|xargs rm -rf "*"  
find . -name "*.txt"|xargs rm -rf "*"  
find . -name "*.xls"|xargs rm -rf "*"  
cp /gscbsp/TY/*.* /afms/bestpay rm -fr /gscbsp/TY/*.txt  
rm -fr /gscbsp/TY/*.xls  
printf "$today Job is done! \n" >> /gscbsp/bin/get_ty.log  

通过脚本达到了我的基本要求。

本文由作者按照 CC BY 4.0 进行授权