En este artículo, vamos a escribir un script de shell para descargar archivos desde un determinado directorio en un servidor a una computadora local usando FTP. Se recomienda tener algún conocimiento de FTP antes de leer este artículo, pero no es necesario.
Antes de escribir un script de shell, veremos cómo descargar un archivo directamente usando comandos, luego lo extenderemos a un script.
Los comandos FTP para descargar archivos son «get» y «mget» , que se utilizan para descargar uno o varios archivos, respectivamente. Estos comandos deben ingresarse dentro de un indicador de FTP. Los archivos siempre se descargan desde el «directorio actual» en el servidor. No hay forma de especificar de qué directorio descargar, por lo que primero tenemos que cambiar al directorio de origen requerido antes de descargar.
Una lista de comandos útiles para descargar archivos (los ejemplos se muestran en el problema a continuación):
1. get filename #download file 2. mget file1 file2 #download multiple files 3. cd dirname #change remote directory 4. lcd dirname #change local directory 5. ftp hostname #login to ftp server 6. bye #terminate ftp connection and quit ftp
Considere el siguiente problema para comprender la descarga de archivos mediante FTP:
Descargue 2 archivos «f1.txt» y «program1.c» del directorio src dentro del servidor al directorio dst dentro de la computadora local.
Implementación paso a paso para descargar:
Paso 1: Primero, inicie sesión en ftp usando el comando «ftp hostname» e ingrese los detalles de inicio de sesión.
Paso 2: Cambie al directorio src en el servidor usando «cd src» y también cambie al directorio dst en la computadora local usando «lcd dst».
Paso 3: Ahora escriba » mget file1.txt program1.c» para descargar los archivos. Luego escriba «adiós» para finalizar la conexión FTP y salir del mensaje de FTP.
Un script de shell para realizar descargas en Stepwise:
Paso 1: primero, almacene los detalles de inicio de sesión de FTP en variables dentro del script. Estos valores no cambian, por lo que no necesita preguntarle al usuario cada vez, y hace que iniciar sesión en el servidor sea conveniente.
HOST = "192.168.0.104" #Server's hostname USER = "lapowner" #Server login username PASSWORD = "1234asdf@Z" #Server login password
Paso 2: tome el directorio de origen y una lista de archivos para descargar como entrada a través de argumentos para el script.
SOURCE = $1 #$1 is the first argument to the script ALL_FILES="${@:2}" #${@:2} is the list of arguments without the first one
Paso 3: escriba el comando FTP con los parámetros -inv o -i -n -v.
Los parámetros se describen a continuación:
Parámetro | Descripción |
---|---|
-i | Deshabilitar el modo interactivo en ftp. Al usar esto, ftp no pedirá confirmación para cada archivo que se descargue. |
-norte | Ayuda a iniciar sesión manualmente en ftp usando «usuario $NOMBRE DE USUARIO $CONTRASEÑA». Sin, este ftp asumiría el nombre de usuario de su escritorio local como el nombre de usuario del servidor. |
-v | Modo detallado para ftp. Esto hace que la salida sea más detallada. |
Además, suministre comandos FTP (como mget, etc.) a FTP a través de la redirección de entrada usando «<<«. Use «EOF» para marcar el comienzo y el final de la entrada a FTP.
ftp -inv $HOST <<EOF #Begin input to FTP user $USER $PASSWORD cd $SOURCE mget $ALL_FILES bye EOF #End input to FTP
Paso 4: Ejecute el script con los argumentos i) el directorio de origen y ii) una lista de archivos:
./script.sh file1 #for downloading file1 ./script.sh *.c file1 #for downloading file1 and all c files
Complete el script de Shell para descargar archivos desde un directorio de origen en un servidor FTP remoto:
#!/bin/bash HOST = "192.168.0.104" USER = "lapowner" PASSWORD = "1234asdf@Z" SOURCE = $1 ALL_FILES = "${@:2}" ftp -inv $HOST <<EOF user $USER $PASSWORD cd $SOURCE mget $ALL_FILES bye EOF
Producción:
Publicación traducida automáticamente
Artículo escrito por shameedoffice y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA