📜  将文件放入 FTP 服务器的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:26.646000             🧑  作者: Mango

将文件放入 FTP 服务器的 Shell 脚本

文件传输协议也称为 FTP,用于将文件从客户端传输到服务器,反之亦然。它主要使用端口 21 进行通信。

在这里我们可以简化使用FTP上传文件的过程。但是,在我们编写脚本之前,让我们看看如何直接使用命令获取/放置文件到 ftp 服务器上。

基本FTP命令:

启动和结束 FTP 通信的命令如下所示:

ftp server #Prompts for login details and connects to server
#Example: 
ftp 192.168.0.104

bye           #Terminates the ftp connection and exits ftp

例子:

将文件放入 FTP 服务器的 Shell 脚本



输入“FTP 主机名”后,系统会要求您输入用户名和密码。如果输入详细信息后登录成功,我们从服务器上FTP用户的主目录开始。您现在上传的任何文件都会上传到此目录。如果您必须在服务器上的某个其他目录中上传文件,您首先必须使用“cd”命令切换到该目录。请注意,在 FTP 提示中使用 cd 命令只会更改服务器上的目录,即我们仍将位于本地计算机上的同一目录中。

FTP 中的命令帮助我们导航服务器的目录,从服务器获取和上传文件。要获取单个或多个文件,我们可以分别使用命令“get”和“mget”。同样,要放置单个或多个文件,我们可以分别使用“put”和“mput”命令。

一些重要的 ftp 命令:

ls                   #Lists files in server
cd dir                #Change directory in server
get file1.c           #Downloads file1.c
put file.txt       #Uploads file.txt
mput *.c file.txt  #Uploads all c files and file.txt

通过 FTP 提示将文件放入服务器的示例:

将文件放入 FTP 服务器的 Shell 脚本

将文件放入FTP 服务器的Shell 脚本:

#!/bin/bash

# The 3 variables below store server and login details
HOST="192.168.0.104"
USER="user1"
PASSWORD="1234"


# $1 is the first argument to the script
# We are using it as upload directory path
# If it is '.', file is uploaded to current directory.
DESTINATION=$1


# Rest of the arguments are a list of files to be uploaded.
# ${@:2} is an array of arguments without first one.
ALL_FILES="${@:2}"


# FTP login and upload is explained in paragraph below
ftp -inv $HOST <

将文件放入 FTP 服务器的 Shell 脚本

上述脚本需要以下数据:

  1. 服务器的主机名
  2. 服务器用户的登录详细信息
  3. 在服务器上上传文件的目录(作为参数传递给脚本)
  4. 要上传到服务器的文件列表(作为参数传递给脚本)

登录服务器后,我们需要手动输入FTP命令,但通过使用输入重定向,我们可以直接在脚本中提供命令。 “<<”用于输入重定向,“EOF”用于标记FTP输入的开始和结束。

“mput”命令已用于上传文件,因为 mput 可以上传单个文件或多个文件。

如果登录成功并且作为脚本输入提供的文件可用,则所有文件都应该已放入服务器,并为每个文件显示成功消息。

选项 -inv 也可以写成 -i -n -v 其功能如下表所示:

OptionMeaning
-iDisable interactive mode, so that FTP will not ask for confirmation of each file while using mput command etc. We are using this for convenience while uploading or downloading files
-nDisable auto-login. We have to do this, so we can manually log in using “user” command inside the script
-vEnables verbose mode. This helps us to see the server responses after executing each FTP command

要执行脚本,请提供上传目录和文件列表:

./script_name.sh  path_to_upload file1 file2 file3

文件上传示例(将所有的.c文件和f1.txt放在服务器当前目录下):

将文件放入 FTP 服务器的 Shell 脚本