Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156

    [BASH/SCRIPT] Inserire data in logfile prima dello stderr

    Vorrei poter creare un rudimentale file di log per un mio script, dove su tale file venga scritta la data e il messaggio di errore generato da un comando presente nello script.. Faccio un esempio

    codice:
    ls /directory/che/non/esiste
    messaggio che compare in stderr
    codice:
    ls: /directory/che/non/esiste: No such file or directory
    vorrei poter redirigere lo stderr su un file di log, inserendo però anche la data, una cosa del tipo

    codice:
    Jul 22 11:17:35 ls: /directory/che/non/esiste: No such file or directory
    Mi sto scervellando cercando di utlizzare redirezioni complesse, ma non riesco a far scrivere la data prima dell'output d'errore del comando..

    pensavo a soluzioni con parentesi graffe del tipo
    codice:
    { ls /directory/che/non/esiste || $(date +%T) } # --->QUI DOVREI METTERE LE REDIREZIONI<-----
    Ho provato ad aggiungere un po' di combinazioni con le redirezioni, ma tutte le combinazioni che ho provato hanno fallito miseramente..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Potresti provare con

    codice:
    ls /non/esiste 2>> log || sed -i "`wc -l log | cut -d " " -f 1`s/^.*/`date +%F" "%T` &/" log
    però, a meno di qualche modifica un po' contorta, funziona solo se il messaggio di errore del comando è su una sola riga, del tipo "no such file or directory", "permission denied" ecc...
    every day above ground is a good one

  3. #3
    prova cosi':

    codice:
    ERROR_MSG=`tuocomando 2&>1`
    DATE=`date` #formatta la data come vuoi cambiando i parametri di date
    if [ "$?" != "0" ]; then
      echo -e "$DATE $ERROR_MSG" >> logfile.log
    fi
    questo dovrebbe funzionare anche per output multiriga grazie all' echo -e.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    Innanzitutto grazie a tutti per la repentina risposta!
    Il mio intento però era di poter ottenere lo stesso risultato utilizzando le redirezioni, anzichè una serie di comandi collegati attraverso piping (prima risposta che mi è stata fornita).
    La seconda soluzione è quella che per ora si addice di più al mio caso.. Il fatto è che speravo di ottenere una via ancora più semplice e pulita utilizzando solo ed esclusivamente le redirezioni e i descrittori di file: volevo insomma cavarmela con una sola riga di script, evitando l'utilizzo di variabili e costrutti condizionali.

    Secondo me esiste un modo, ma non riesco a trovrarlo..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.