Linux下Shell腳本實現FTP自動上傳和下載文件

腳本語言 Linux AWK 波波說運維 2019-05-09

概述

之前測試寫的一個腳本,主要是為了實現FTP自動上傳和下載文件。大家可以參考下:

Linux下Shell腳本實現FTP自動上傳和下載文件


基礎環境配置

[root@pxzxdm01 ~]# useradd -d /home/ftp1 ftp1 
[root@pxzxdm01 ~]# passwd ftp1 (密碼123456)
[root@pxzxdm01 ~]# usermod -s /sbin/nologin ftp1 (限定用戶ftp1只能ftp登陸)

登錄FTP實現下載文件功能

FTP服務器:xx.xx.xx.A

FTP路徑:/home/ftp1/down

本地路徑(xx.xx.xx.B): /home/scripts/down

用戶名密碼:ftp1/123456

1、批量下載腳本

#從FTP上批量下載文件到本地
#!/bin/sh
ftp -v -n xx.xx.xx.A<<EOF
user ftp1 123456
binary
cd down
lcd /home/scripts/down
prompt
mget *
bye
EOF
echo "download from ftp successfully"
Linux下Shell腳本實現FTP自動上傳和下載文件

2、下載單個文件腳本

#從FTP上下載單文件到本地
#!/bin/sh
ftp -v -n xx.xx.xx.A<<EOF
user ftp1 123456
binary
cd down
lcd /home/scripts/down
prompt
#get down.txt,並改名成note.txt
get down.txt note.txt
bye
EOF
echo "download from ftp successfully"

登錄FTP實現上傳文件功能

FTP服務器:xx.xx.xx.A

FTP路徑:/home/ftp1/up

本地路徑: /home/scripts/up

將文件從本地傳到FTP的腳本如下:

1、批量上傳腳本代碼

#從本地向FTP批量上傳文檔
#!/bin/sh
ftp -v -n xx.xx.xx.A<<EOF
user ftp1 123456
binary
hash
cd up
lcd /home/scripts/up
prompt
mput *
bye
#here document
EOF
echo "commit to ftp successfully"
Linux下Shell腳本實現FTP自動上傳和下載文件

2、上傳單個文件腳本

#從本地向FTP上傳單個文檔
#!/bin/sh
PUTFILE=up.txt
ftp -v -n xx.xx.xx.A<<EOF
user ftp1 123456
binary
cd up
lcd /home/scripts/up
prompt
put $PUTFILE
bye
#here document
EOF
echo "commit to ftp successfully"

自動上傳文件

1、十分鐘內/home/scripts/up變動的文件內容統一上傳/home/ftp1/up下腳本

#!/bin/sh
filename=`find /home/scripts/up -type f -mmin -10|awk -F '/' '{print $NF}'`
for i in $filename;
do
ftp -v -n xx.xx.xx.A<<-EOF
user ftp1 123456
binary
cd up
lcd /home/scripts/up
prompt
put $i
bye
EOF
echo "commit to ftp successfully"
done

2、二十分鐘內/home/scripts/up下變動的文件上傳/home/ftp1/up下對應的文件夾下腳本

路徑:find /home/scripts/up -type f -mmin -120 -exec dirname {} \;

#!/bin/sh
#切換到上傳根目錄下
cd /home/scripts/up
file=`find ./ -type f -mmin -20`

for i in $file;
do

#獲取文件名
filename=`find $i|awk -F '/' '{print $NF}'`
#獲取路徑名
dirname=`find $i -exec dirname {} \;`


ftp -v -n xx.xx.xx.A<<-EOF
user ftp1 123456
binary
cd up
cd $dirname
pwd
lcd $dirname
prompt
pwd
put $filename
bye
EOF

echo "commit to ftp successfully"
done

注意:sftp可以通過put -r 遞歸創建目錄,ftp不行


上面是之前分開寫的幾個腳本,這個還是看需求吧,整體難度不大,大家可以自己測試下。後面會分享更多關於devops和DBA方面內容,感興趣的朋友可以關注下!!

Linux下Shell腳本實現FTP自動上傳和下載文件

相關推薦

推薦中...