Faire curl envoyer les erreurs sur la sortie stderr et tout le reste sur la sortie standard
Est-il un moyen de dire curl pour les erreurs de sortie sur la sortie stderr, et tout le reste pour stdout?
La raison en est que je suis à l'aide de curl à partir de la ligne de commande (en fait une tâche cron) pour télécharger un fichier sur un site FTP tous les soirs. Malheureusement, en raison curl état des sorties de l'information sur la sortie stderr, je reçois un e-mail au sujet d'une erreur lors de la rien de réellement mal tourné. (Je suis rediriger stdout vers un fichier journal, mais en laissant stderr inchangée, de sorte que cron e-mail à moi si il n'y a aucune sortie.)
Il ya des options pour faire du roulage silencieux, ou de sortie tout à stdout, cependant, ces deux solutions de rechange en sorte que les erreurs figurant sur stderr - sens, je ne recevrez un e-mail lorsqu'il y a effectivement une erreur je veux le savoir.
Donc, il y a une façon de faire de curl seulement les erreurs de sortie sur la sortie stderr, mais laissez normale de sortie intacte sur la sortie standard stdout?
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Grâce à Russell Davis réponse sur cette page,
man curl
, d'essais et d'erreurs.Pour les curieux, voici le
wget
version de la question: https://superuser.com/questions/420120/wget-is-silent-but-it-displays-error-messages--silent
empêcher le déroulement normal des messages envoyés sur la sortie standard si? Je voudrais encore voir ces alors que je sais que curl est en train de faire quelque chose!curl -s -S
À partir de la page de man:
Après quelques expérimentations, j'ai trouver la solution de contournement suivante, mais je suis toujours ouvert à de meilleures alternatives.
Il fonctionne en stockant temporairement toutes les données de sortie (stdout et stderr) dans un fichier temporaire, puis d'envoyer le contenu de ce fichier à stdout stderr ou en fonction curl du code de sortie. Si curl échec de l'ensemble de la production va aller vers stderr (et être envoyé par e-mail à moi grâce à cron), mais si curl réussi la sortie va aller vers la sortie standard à la place (qui est redirigé vers un fichier de log dans le cron de commande, ce qui n'entraîne aucun e-mail.)
curl -f
. La documentation dit "silencieuse (pas de sortie) sur les erreurs de serveur", mais il signifie vraiment "pas de sortie sur stdout" -- erreurs seront toujours sortie stderr.