Secuencia de comandos de shell para cargar a ftp para probar la conexión
El objetivo principal de este script es monitorear el servidor FTP. Este script es un ejemplo de cómo usar el comando ftp en el shell bash. El administrador del sistema puede utilizar este script para comprobar si el servidor FTP está activo y cargar allí los datos / copias de seguridad.
Cada vez que el script crea un nuevo archivo, cada vez con una suma md5 diferente, después de que el script lo cargue en el servidor FTP, verifique md5sum de ambos archivos. Si md5sum es el mismo, eso significa que el archivo se cargó correctamente en el servidor FTP.
Shell Script para probar la carga de ftp
La siguiente carga de ftp de prueba de script de shell:
#!/bin/bash function usage { echo "Usage: $0" echo "--ftpserver " echo "--help - this help" exit 1 } if [ $# -eq 0 ]; then usage fi while [ $# -gt 0 ] do case "$1" in --ftpserver) HOST=$2;TIMEOUT=$3;shift;; --help) usage;; *) break;; esac shift done if [ x$HOST = "x" ]; then usage fi ### Global Variables ORIG_DIR="/tmp/" LOG_FILE="/tmp/ftp.log" EMAIL="info@linoxide.com" #next function will make all checks. function check { #few more variables ####VARIABLES MAXTIMEOUT=300 ORIG_FILE="check.file" FTPTIMEOUT='20' USERNAME="user" FOLDER="test" PASSWORD="password" DATAFOLDER="somefolder" cd $ORIG_DIR echo -n "Creating file … " dd if=/dev/urandom of=$ORIG_DIR/$ORIG_FILE bs=104857 count=150 > /dev/null 2>&1 echo "Done" echo -n "Uploading file … " ftp -inv < $LOG_FILE open $HOST user $USERNAME $PASSWORD cd $FOLDER/$DATAFOLDER binary passive put $ORIG_FILE quote size $ORIG_FILE close bye EOF echo " DONE" echo -n "Checking MD5 sum ... " ftp -inv <> $LOG_FILE open $HOST user $USERNAME $PASSWORD cd $FOLDER/$DATAFOLDER passive binary quote size $ORIG_FILE dir quote XMD5 $ORIG_FILE close bye EOF MD5=`tail -2 $LOG_FILE | head -1 | awk '{print $2}' | tr [:upper:] [:lower:]` ftp -in </dev/null open $HOST user $USERNAME $PASSWORD cd $FOLDER/$DATAFOLDER delete $ORIG_FILE close bye EOF MD5_ORIG=`/usr/bin/md5sum $ORIG_FILE | awk '{print $1}'` if [ x"${MD5}" != x"${MD5_ORIG}" ]; then RESULT=" File corrupted." else RESULT=" MD5 sum OK " fi echo $RESULT rm $ORIG_FILE } check
Salida de script de shell
./ftp.sh --ftpserver ftp.example.com 20 Uploading file ... DONE Checking MD5 sum ... MD5 sum OK
Entendiendo el guión anterior
# Dado que habrá pocas veces de usar los mismos comandos, crearemos una función con uso de nombre
# Esta función solo nos mostrará el menú de ayuda y saldrá del script.
uso de la función {
echo «Uso: $ 0»
#le decimos al usuario qué argumentos espera el script
echo «–ftpserver»
echo «–help – esta ayuda»
# ya que no es argumento de mal argumento – salir del script
salida 1
}
# Verificamos si el usuario pasa parámetros al script
si [ $# -eq 0 ]; entonces
# si no hay parámetros, simplemente ejecute el uso de la función que muestra el menú de ayuda
uso
fi
mientras [ $# -gt 0 ] #si el usuario pasa algunos parámetros, verificamos cada uno
hacer
caso «$ 1» en # tomamos el primer argumento pasado por el usuario
# si el usuario pasa –ftpserver como primer parámetro, el segundo será el nombre del servidor ftp y el tercero el tiempo de espera.
–ftpserver) HOST = $ 2; TIMEOUT = $ 3; shift ;;
#si el usuario pasa –ayuda como parámetro, acabamos de mostrar el menú de ayuda
–ayuda) uso ;;
# si pasó algo más, simplemente salga del script
*) descanso;;
esac
cambio
hecho #finish of while loop
#si el usuario no pasó el nombre del servidor ftp – mostramos el menú de ayuda
si [ x$HOST = «x» ]; entonces
uso
fi
## Usaremos algunas variables, así que en las próximas líneas solo pongamos sus valores.
### Variables globales
ORIG_DIR = «/ tmp /»
LOG_FILE = «/ tmp / ftp.log»
EMAIL = «info@linoxide.com»
La función #next hará todas las comprobaciones.
control de funcionamiento {
# pocas variables más
#### VARIABLES
TIEMPO MÁXIMO = 300
ORIG_FILE = «archivo de verificación»
FTPTIMEOUT = ’20 ‘
USERNAME = «usuario»
FOLDER = «prueba»
PASSWORD = «contraseña»
DATAFOLDER = «alguna carpeta»
#entrando carpeta temporal
cd $ ORIG_DIR
#con dd generamos un archivo de 15Mb con nombre de la variable $ ORIG_FILE y con contenido aleatorio.
echo -n «Creando archivo …»
dd if = / dev / urandom of = $ ORIG_DIR / $ ORIG_FILE bs = 104857 count = 150> / dev / null 2> & 1
echo «Hecho»
# Esto le dice al usuario que comenzamos a cargar el archivo.
echo -n «Subiendo archivo …»
# usamos el comando ftp para cargar el archivo, -i desactiva las solicitudes interactivas
ftp -inv <$ LOG_FILE
#connect to host
abrir $ HOST
#conectarse con usuario y contraseña
usuario $ USERNAME $ PASSWORD
#cd a alguna carpeta de prueba
cd $ FOLDER / $ DATAFOLDER
#le decimos al servidor ftp que usaremos el modo binario
binario
# usaremos el modo pasivo
pasivo
# este comando copia el archivo local al servidor ftp
poner $ ORIG_FILE
#obtención del tamaño del archivo eliminado
tamaño de cotización $ ORIG_FILE
#closing connection
cerrar
adiós
# salir del comando ftp
EOF
#decirle al usuario que la carga se completó
echo «HECHO»
#comenzando la verificación md5
echo -n «Comprobando suma MD5 …»
#lo mismo que arriba
ftp -inv <> $ LOG_FILE
abrir $ HOST
usuario $ USERNAME $ PASSWORD
cd $ FOLDER / $ DATAFOLDER
pasivo
binario
tamaño de cotización $ ORIG_FILE
dir
#obteniendo md5 del archivo remoto
cotizar XMD5 $ ORIG_FILE
cerrar
adiós
EOF
#obteniendo el valor md5sum del archivo de registro, ya que estará en mayúsculas lo convertimos a minúsculas con tr
MD5 = `tail -2 $ LOG_FILE | cabeza -1 | awk ‘{imprimir $ 2}’ | tr [:upper:] [:lower:]’
#necesitamos conectarnos al servidor remoto una vez más para eliminar el archivo
ftp -in dev / null
abrir $ HOST
usuario $ USERNAME $ PASSWORD
cd $ FOLDER / $ DATAFOLDER
#este comando elimina el archivo remoto
eliminar $ ORIG_FILE
cerrar
adiós
EOF
#con el comando md5sum obtenemos md5sum del archivo local
MD5_ORIG = `/ usr / bin / md5sum $ ORIG_FILE | awk ‘{imprimir $ 1}’ `
# esta línea compara md5sums, y la variable RESULT contendrá el mensaje de acuerdo con la verificación
si [ x»${MD5}» != x»${MD5_ORIG}» ]; entonces
RESULTADO = «Archivo dañado».
demás
RESULTADO = «Suma MD5 OK»
fi
# Esto le dirá al usuario si el archivo se cargó correctamente o no.
echo $ RESULTADO
# eliminar archivo local
rm $ ORIG_FILE
# fin de función
}
#para ejecutar la función (sin argumentos)
controlar