文章目录
Linux下使用Shell脚本实现FTP自动上传和下载文件
参考文档:https://www.cnblogs.com/liqing1009/p/13534506.html
这个脚本是本次测试的从本地上传文件到远程 ftp 服务器
FTP服务器:192.168.169.141
FTP路径:/var/ftp/write
本地文件路径:/home/diffFile.txt
#!/bin/bash
vCheckTime=`date "+%F-%T"`
# 本地上传文件路径
localFile="/home/diffUserFile.txt"
# 上传到远程文件路径
remoteFile="write/diffUserFile$vCheckTime"
# ftp ipaddress
ftpIP="192.168.169.141"
function uploadFile {
ftp -v -n $ftpIP<<EOF
user admin admin
binary
passive
put $localFile $remoteFile
bye
EOF
}
uploadFile
注:这里的 remoteFile
即 FTP
服务器上的路径,但是如果在上传时使用绝对路径会提示 553 Could not create file
1. 从FTP上批量下载文件到本地
登录FTP实现下载文件功能
FTP服务器:192.168.0.199
FTP路径:/ftphome/data
本地路径:/local/data
将文件从FTP下载到本地的脚本如下
#从FTP上批量下载文件到本地
#!/bin/sh
ftp -v -n 192.168.169.141<<EOF
user admin admin
binary
cd /ftphome/downloadData
lcd /local/getDownloadData
prompt
mget *
bye
EOF
echo "download from ftp successfully"
prompt
开启关闭交互模式
2. 从FTP上下载单文件到本地
#从FTP上下载单文件到本地
#!/bin/sh
ftp -v -n 192.168.0.199<<EOF
user ftpuser ftppwd
binary
cd /ftphome/downloadData
lcd /local/getDownLoadData
prompt
#get test.txt
get test.txt
bye
EOF
echo "download from ftp successfully"
3. 从 FTP 一次下载多个文件
上传也可以使用同样的方式
#!/bin/sh
read -p ftpIP: ftpIP
read -p username: username
read -p passwd: passwd
read -p localFilePath: localFilePath
read -p ftpFilePath: ftpFilePath
read -p filesName: filesName
# ftpIP=192.168.137.104
# username=admin
# passwd="123456789!@#$%^&*("
# localFilePath="/data/dongxx"
# ftpFilePath="admin"
# filesName=a,b,c
echo "user $username $passwd" >> ftpdown.txt
echo "binary" >> ftpdown.txt
echo "cd $ftpFilePath" >> ftpdown.txt
echo "lcd $localFilePath" >> ftpdown.txt
fileName=`echo $filesName | sed -E 's/,/\n/g'`
for i in $fileName
do
echo "get $i" >> ftpdown.txt
done
echo "bye" >> ftpdown.txt
ftp -v -n $ftpIP<<EOF < ftpdown.txt
EOF
一次下载多个文件时,将下载命令写入文件中,使用 EOF 参数调用文件内容执行。
4. 从本地向FTP批量上传文档
登录FTP实现上传文件功能
FTP服务器:192.168.0.199
FTP路径:/ftphome/uploadData
本地路径:/local/getUploadData
将文件从本地传到FTP的脚本如下:
#从本地向FTP批量上传文档
#!/bin/sh
ftp -v -n 192.168.0.199<<EOF
user ftpuser ftppwd
binary
hash
cd /ftphome/uploadData
lcd /ftphome/getUploadData
prompt
mput *
bye
#here document
EOF
echo "commit to ftp successfully"
5. 从本地向FTP上传单个文档
#从本地向FTP上传单个文档
#!/bin/sh
PUTFILE = test.txt
ftp -v -n 192.168.0.199<<EOF
user ftpuser ftppwd
binary
cd /ftphome/uploadData
lcd /ftphome/getUploadData
prompt
put $PUTFILE
bye
#here document
EOF
echo "commit to ftp successfully"