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

注:这里的 remoteFileFTP 服务器上的路径,但是如果在上传时使用绝对路径会提示 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"

 
 
 
 
 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐