El Protocolo de transferencia de archivos, también llamado FTP, se utiliza para transferir archivos del cliente al servidor y viceversa. Utiliza principalmente el puerto 21 para la comunicación.
Aquí podemos simplificar el proceso de carga de archivos mediante FTP. Pero, antes de escribir un script, veamos cómo obtener/colocar archivos en un servidor ftp directamente usando comandos.
Comando FTP básico:
Los comandos para iniciar una comunicación FTP y finalizarla se muestran a continuación:
ftp server #Prompts for login details and connects to server #Example: ftp 192.168.0.104 bye #Terminates the ftp connection and exits ftp
Ejemplo:
Después de escribir «Nombre de host FTP», se le pedirá un nombre de usuario y una contraseña. Si el inicio de sesión es exitoso después de ingresar los detalles, comenzamos en el directorio de inicio del usuario FTP en el servidor. Cualquier archivo que cargue ahora se carga en este directorio. Si tiene que cargar un archivo en algún otro directorio en el servidor, primero debe cambiar a ese directorio usando el comando «cd». Tenga en cuenta que, al usar el comando cd en un indicador de FTP, solo cambia el directorio en el servidor, es decir, seguiremos estando en el mismo directorio en nuestra computadora local.
Los comandos en FTP nos ayudan a navegar por los directorios del servidor, buscar y cargar archivos desde y hacia el servidor. Para obtener archivos únicos o múltiples, podemos usar los comandos «get» y «mget» respectivamente. De manera similar, para poner archivos únicos o múltiples, podemos usar los comandos «poner» y «mput» respectivamente.
Algunos comandos ftp importantes:
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
Ejemplo de cómo poner un archivo en el servidor a través del indicador de FTP:
Shell Script para poner el archivo en un servidor FTP:
#!/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 <<EOF user $USER $PASSWORD cd $DESTINATION mput $ALL_FILES bye EOF
El script anterior requiere los siguientes datos:
- nombre de host del servidor
- Detalles de inicio de sesión del usuario del servidor
- El directorio en el que cargar archivos en el servidor (pasado como argumento al script)
- La lista de archivos que se cargarán en el servidor (pasada como argumento al script)
Después de iniciar sesión en el servidor, debemos ingresar los comandos FTP manualmente, pero al usar la redirección de entrada podemos proporcionar los comandos directamente en el script. “<<” se usa para la redirección de entrada y “EOF” se usa para marcar el comienzo y el final de la entrada de FTP.
El comando «mput» se ha utilizado para cargar archivos, ya que mput puede cargar un solo archivo o varios archivos.
Si el inicio de sesión es exitoso y los archivos proporcionados como entrada para el script están disponibles, todos los archivos deberían haberse colocado en el servidor junto con un mensaje de éxito para cada archivo.
Las opciones -inv también se pueden escribir como -i -n -v y sus funciones se explican en la siguiente tabla:
Opción | Sentido |
---|---|
-i | Deshabilite el modo interactivo, para que FTP no solicite confirmación de cada archivo mientras usa el comando mput, etc. Estamos usando esto por conveniencia al cargar o descargar archivos |
-norte | Deshabilitar el inicio de sesión automático. Tenemos que hacer esto, para que podamos iniciar sesión manualmente usando el comando «usuario» dentro del script |
-v | Habilita el modo detallado. Esto nos ayuda a ver las respuestas del servidor después de ejecutar cada comando FTP. |
Para ejecutar el script, proporcione el directorio de carga y también una lista de archivos:
./script_name.sh path_to_upload file1 file2 file3
Ejemplo de carga de archivos (Coloque todos los archivos .c y f1.txt en el directorio actual del servidor):
Publicación traducida automáticamente
Artículo escrito por shameedoffice y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA