2017-07-20 5 views
1

Ich habe ein Skript, das eine Datei auf einem WebDAV-Server hochgeladen curl verwenden.curl --fail ohne stdout Unterdrückung von

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

Ich möchte zwei Dinge zugleich:

  • das Skript auf stdout ausgegeben haben (die in eine Protokolldatei gerichtet ist)
  • erkennen, ob der Upload
gelang

Soweit ich weiß, gibt curl einen Exit-Code von 0 auch in 401 (nicht autorisiert) oder 407 (Konflikt) Situationen zurück. Die Option --fail kann verwendet werden, um dieses Verhalten zu ändern, unterdrückt jedoch stdout.

Was wäre die beste Abhilfe für dieses sein? tee und grep?

Antwort

1

curl schreibt seine Ausgabe auf stderr(2), der Fehlerstrom statt stdout(1). Umleiten Sie es auf den Befehl mit 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