【Linux系列】-Linux中用shell脚本从SFTP服务器下载文件


银企直连的电子回单接口中,部分银行使用sftp服务作为文件服务器,通常只保留N天的文件内容,企业未在规定的时间范围下载文件之后就不能下载了,那么有一个自动下载的脚本岂不美滋滋。

Linux安装SFTP服务

1、检查服务器是否安装SFTP服务

[root@localhost ~]# vsftpd -v		//方法一
[root@localhost ~]# rpm -q vsftpd 	//方法二
[root@localhost ~]# where is vsftpd

2、安装SFTP服务

[root@localhost ~]# yum -y install vsftpd

3、关闭firewall和SELinux

[root@localhost ~]# setenforce 0 	# FTP用户登录创建文件夹失败 不重启系统
[root@localhost ~]# vi /etc/selinux/config  		# 修改为SELINUX=disabled  FTP用户登录创建文件夹失败  重启系统
[root@localhost ~]# systemctl stop firewalld.service 	# 停止 firewall
[root@localhost ~]# systemctl disable firewalld.service 	# 禁止 firewall 开机启动
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp # 不关闭防火墙,需要防火墙添加FTP服务
[root@localhost ~]# firewall-cmd --reload

4、关闭匿名访问

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #修改配置文档,关闭匿名访问:anonymous_enable=NO

/etc/vsftpd/ftpusers:禁止使用vsftpd的用户列表文件

/etc/vsftpd/user_list:禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器

sftp 免密登陆设置

1、生成公钥文件

[ftpuser@localhost ~]$ ssh-keygen -b 1024 -t rsa	===>ftp登陆用户环境,生成安全证书(执行命令直接回车,选择默认空密码证书即可)

2、将公钥文件上传至SFTP服务器并保存在用户的authorized_keys文件中

[ftpuser@localhost ~]$ scp /home/ftpuser/.ssh/id_rsa.pub SFTP服务器IP:路径/id_rsa.pub 	# 将客户端的公钥上传至SFTP服务器
[ftpuser@localhost ~]$ cat id_rsa.pub >> /home/ftpuser/.ssh/authorized_keys # 将客户端公钥保存在服务器SFTP用户的authorized_keys文件中

3、验证

[docker@localhost ~]$ sftp -oIdentityFile=/home/docker/ftp_rsa -oPort=22 ftpuser@192.168.137.130 # 连接时携带私钥即可

SFTP自动下载文件脚本

#!/bin/bash
data=$(date +%Y%m%d -d '-1 day')
cd /home/ICBC_HD
sftp -oIdentityFile=/home/docker/ftp_rsa -oPort=22 ftpuser@192.168.137.130 <<EOF // <<EOF 不可换行
cd data
mget *$data*
exit
EOF
  • -oIdentityFile:私钥文件
  • -oPort:端口
  • sftp -oIdentityFile= -oPort= 用户@ip


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM