2017-07-20 19 views
1

J'ai un script qui télécharge un fichier sur un serveur WebDav en utilisant curl.curl --fail sans supprimer stdout

curl --anyauth --user user:password file http://webdav-server/destination/ 

Je veux deux choses en même temps:

  • ont la sortie de script à stdout (qui est dirigé vers un fichier journal)
  • détecter si le téléchargement a réussi

Pour autant que je sache, curl renvoie un code de sortie de 0 même dans 401 (non autorisé) ou 407 (conflit) situations. L'option --fail peut être utilisée pour modifier ce comportement, mais elle supprime stdout.

Quelle serait la meilleure solution pour cela? tee et grep?

Répondre

1

curl écrit sa sortie à stderr(2), le flux d'erreur au lieu de stdout(1). Redirige le sur la commande en utilisant 2>&1

curl --fail --anyauth --user user:password file http://webdav-server/destination/ 2>&1 > logFile 
retval=$? 
if [ $retval -eq 0 ]; then 
    echo "curl command succeeded and the log present in logFile" 
fi