【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