Vorrei eseguire un controllo dello stato di un servizio chiamando un URL specifico su di esso. Sembra che la soluzione più semplice sarebbe usare cron per eseguire il controllo ogni minuto circa. In caso di errori, cron mi invia un'e-mail.
Ho provato a usare cUrl per questo, ma non riesco a far sì che emetta messaggi solo in caso di errori. Se provo a indirizzare l'output su /dev/null, stampa il rapporto sullo stato di avanzamento.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5559 100 5559 0 0 100k 0 --:--:-- --:--:-- --:--:-- 106k
Ho provato a guardare tra le opzioni di arricciatura ma non riesco a trovare nulla che si adatti alla situazione in cui vuoi che sia silenzioso in caso di successo ma faccia rumore per gli errori.
C'è un modo per fare in modo che curl faccia quello che voglio o c'è qualche altro strumento che dovrei guardare?
Risposta accettata:
Che dire di -sSf
? Dalle pagine man:
-s/--silent Silent or quiet mode. Do not show progress meter or error messages. Makes Curl mute. -S/--show-error When used with -s it makes curl show an error message if it fails. -f/--fail (HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when a HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22. This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407).
Ad esempio:
curl -sSf http://example.org > /dev/null