tutorial query puertos indice documentacion crear linux bash curl

linux - query - logstash tutorial



cómo volver a ejecutar el comando "curl" automáticamente cuando se produce el error (2)

A veces, cuando ejecuto un script de bash con el comando curl para cargar algunos archivos en mi servidor ftp, devolverá un error como:

56 response reading failed

y tengo que encontrar la línea incorrecta y volver a ejecutarlos manualmente y estará bien.

Me pregunto si eso podría volver a ejecutarse automáticamente cuando se produce el error.

Mis guiones son así:

#there are some files(A,B,C,D,E) in my to_upload directory, # which I''m trying to upload to my ftp server with curl command for files in `ls` ; do curl -T $files ftp.myserver.com --user ID:pw ; done

Pero a veces A, B, C, se cargarían con éxito, solo D quedaba con un "error 56", por lo que tengo que volver a ejecutar el comando curl manualmente. Además, como dijo Will Bickford, prefiero que no se requiera confirmación, porque siempre estoy dormido cuando se ejecuta el script. :)


Aquí hay un fragmento de bash que uso para realizar un retroceso exponencial:

# Retries a command a configurable number of times with backoff. # # The retry count is given by ATTEMPTS (default 5), the initial backoff # timeout is given by TIMEOUT in seconds (default 1.) # # Successive backoffs double the timeout. function with_backoff { local max_attempts=${ATTEMPTS-5} local timeout=${TIMEOUT-1} local attempt=1 local exitCode=0 while (( $attempt < $max_attempts )) do if "$@" then return 0 else exitCode=$? fi echo "Failure! Retrying in $timeout.." 1>&2 sleep $timeout attempt=$(( attempt + 1 )) timeout=$(( timeout * 2 )) done if [[ $exitCode != 0 ]] then echo "You''ve failed me for the last time! ($@)" 1>&2 fi return $exitCode }

Luego, úselo junto con cualquier comando que establezca correctamente un código de salida defectuoso:

with_backoff curl ''http://monkeyfeathers.example.com/''


Quizás esto ayude. Intentará el comando, y si falla, te dirá y hará una pausa, dándote la oportunidad de arreglar el run-my-script .

COMMAND=./run-my-script.sh until $COMMAND; do read -p "command failed, fix and hit enter to try again." done