Creazione automatica di un file di log per inviare quesiti al forum: differenze tra le versioni

1.0.62
(1.0.61)
(1.0.62)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
== Introduzione ==
== Introduzione ==
Questo [[script]] permette la creazione di un file contenente informazioni utili che possono aiutare a comprendere meglio il proprio problema oppure che è possibile portare a conoscenza del [http://forum.debianizzati.org forum] per tentare di risolverlo insieme. Le informazioni riguardano i seguenti tipi di problema:
Questo [[script]] permette la creazione di un file contenente informazioni utili che possono aiutare a comprendere meglio il proprio problema oppure che è possibile portare a conoscenza del [http://forum.debianizzati.org forum] per tentare di risolverlo insieme.<br/>
Le informazioni riguardano i seguenti tipi di problema:
* Connessioni di rete
* Connessioni di rete
* Video
* Video
Riga 8: Riga 9:
* Mount/unmount di periferiche
* Mount/unmount di periferiche
* Touchpad
* Touchpad
* Altro. Verranno inserite nel log solo informazioni generiche (già presenti nei log creato con tutte le tipologie di problema precedenti).
* Altro. Verranno inserite nel log solo informazioni generiche (già presenti nel log creato con tutte le tipologie di problema precedenti).


Lo script crea due file:
Lo script crea due file:
Riga 24: Riga 25:
== Utilizzo ==
== Utilizzo ==
# Eseguire un upgrade del sistema, se possibile, in modo che le informazioni raccolte dallo script siano aggiornate.
# Eseguire un upgrade del sistema, se possibile, in modo che le informazioni raccolte dallo script siano aggiornate.
# Copiare manualmente il codice dello script in un file di testo, per esempio con nome <code>scriptlog-debianizzati.org</code> e dargli permessi di esecuzione (<code>chmod a+x scriptlog-debianizzati.org</code>).<br/>In alternativa, se si preferisce, è possibile eseguire il seguente comando:<pre>wget -qO- "http://guide.debianizzati.org/index.php?title=Aiuto:LogScript&action=edit"|awk '/=S=/{while(getline&&!index($0,"=F"))print}'|base64 -d|tar xz</pre>
# Copiare manualmente il codice dello script in un file di testo all'interno di una directory a propria scelta. Il nome del file può essere scelto liberamente, ad esempio <code>scriptlog-debianizzati.org</code>.
# Eseguire lo script con i permessi di [[root]]:<pre># ./scriptlog-debianizzati.org</pre>il comando precedente deve essere eseguito nella stessa directory in cui risiede lo script.<br/>L'utilizzo dei permessi di root è motivato dal fatto che alcuni comandi devono essere eseguiti necessariamente come utente privilegiato.
# Assegnare i permessi di esecuzione al file appena creato; ad esempio, da terminale o emulatore di terminale:<pre>$ chmod a+x scriptlog-debianizzati.org</pre>In alternativa, se si preferisce, è possibile eseguire il seguente comando:<pre>wget -qO- "http://guide.debianizzati.org/index.php?title=Aiuto:LogScript&action=edit"|awk '/=S=/{while(getline&&!index($0,"=F"))print}'|base64 -d|tar xz</pre>con cui verrà creato il file "scriptlog-debianizzati.org" all'interno della directory da cui è stato eseguito il precedente comando. In questo caso vengono automaticamente impostati i permessi di esecuzione per lo script.
# Eseguire da terminale (o emulatore di terminale) lo script con i permessi di [[root]]:<pre># ./scriptlog-debianizzati.org</pre>il comando precedente deve essere eseguito nella stessa directory in cui risiede lo script.<br/>L'utilizzo dei permessi di root è motivato dal fatto che alcuni comandi devono essere eseguiti necessariamente come utente privilegiato.
# Leggere le informazioni a video.
# Leggere le informazioni a video.


Riga 45: Riga 47:
</pre>
</pre>


 
== Debug ==
In caso di malfunzionamento o di output inaspettato dello script, è possibile abilitare il debug impostando la variabile "DEBUG" a "1" all'interno del codice dello script.
<pre>
...
DEBUG=0
...
</pre>
diventa:
<pre>
...
DEBUG=1
...
</pre>
L'esecuzione dello script resterà invariata e, al termine, verrà visualizzato il nome del file contenente l'output di debug da analizzare.
<!-- commento (leggibile per chi modifica la pagina)
<!-- commento (leggibile per chi modifica la pagina)


Riga 96: Riga 111:


# Versione script
# Versione script
readonly VERSIONE="1.0.61"
readonly VERSIONE="1.0.62"


# Path e nome dello script
# Path e nome dello script
Riga 111: Riga 126:
# Nome del file di log in base alla data corrente
# Nome del file di log in base alla data corrente
readonly log="log_$(date '+%d%b_%H%M%S')"
readonly log="log_$(date '+%d%b_%H%M%S')"
# Nome del file di debug
readonly script_debug="/tmp/script_debug_$(date '+%d%b_%H%M%S')"
# File descriptor per il debug
FD=9
# Debug abilitato (1) o disabilitato (0)
readonly DEBUG=0


# URL remoto della pagina contenente lo script
# URL remoto della pagina contenente lo script
Riga 223: Riga 247:
TIPO_AUDIO=0 TIPO_MNT=0 TIPO_TOUCH=0 TIPO_COMM=0 UPDATE=0 BASE64=0
TIPO_AUDIO=0 TIPO_MNT=0 TIPO_TOUCH=0 TIPO_COMM=0 UPDATE=0 BASE64=0


while [ $# -gt 0 ] ; do
while [ $# -gt 0 ]; do
   case "$1" in
   case "$1" in
     "--base64") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || BASE64=1 ;;
     "--base64") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || BASE64=1 ;;
Riga 236: Riga 260:
     "--tipo=touchpad") [ "$TIPO" -eq 1 ] && _parm_tipo_err || TIPO=1 && TIPO_TOUCH=1 ;;
     "--tipo=touchpad") [ "$TIPO" -eq 1 ] && _parm_tipo_err || TIPO=1 && TIPO_TOUCH=1 ;;
     "--tipo=generico") [ "$TIPO" -eq 1 ] && _parm_tipo_err || TIPO=1 && TIPO_COMM=1  ;;
     "--tipo=generico") [ "$TIPO" -eq 1 ] && _parm_tipo_err || TIPO=1 && TIPO_COMM=1  ;;
     "--versione") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || _showvers       ;;
     "--versione") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || _showvers     ;;
     "--help") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || _parm_uso       ;;
     "--help") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || _parm_uso   ;;
     *) _parm_err
     *) _parm_err
   esac
   esac
   shift
   shift
done
done
# --------------------------------------------------------------------------
# Debug
# --------------------------------------------------------------------------
function _debug {
  [ "$DEBUG" -eq 1 ] && [ ! -e /proc/$$/fd/"$FD" ] &&
    {
    exec {FD}>"$script_debug"
    export BASH_XTRACEFD="$FD"
    set -x
    }
}
function _close_debug {
  set +x
  exec {FD}>&-
}


# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
Riga 506: Riga 547:
}
}


# Funzione che stampa un pallino di colore verde in caso di comando con output
# Funzione che stampa un pallino di colore colorato in base al primo parametro
# Visualizza a video l'eventuale stringa passata come primo parametro ($1).
function _printdot {
function _ok {
   echo
   echo
   tput cuu1  # in alto di una riga
   tput cuu1  # in alto di una riga
   tput cuf1  # a destra di uno spazio
   tput cuf1  # a destra di uno spazio
   # se non ci sono parametri, viene stampato solo il pallino
   printf %b "$1•${FINE}\n" # stampa pallino e va a capo
  if [ $# -eq 0 ]; then
    printf %b "${VERDE}•${FINE}\n" # stampa pallino e va a capo
  # se c'è un parametro, viene stampato il pallino e il parametro
  elif [ $# -eq 1 ]; then
    printf %b "${VERDE}•${FINE}"
    tput cuf 3 # a destra di tre spazi
    tput el    # cancella fino a fine riga
    printf %b "$1\n" # stampa il parametro e va a capo
  fi
}
}
# Funzione che stampa un pallino di colore verde in caso di comando con output
function _ok { _printdot "${VERDE}"; }


# Funzione che stampa una pallino rosso in caso di comando privo di output
# Funzione che stampa una pallino rosso in caso di comando privo di output
function _error {
function _error { _printdot "${ROSSO}"; }
  echo
  tput cuu1  # in alto di una riga
  tput cuf1 # a destra di uno spazio
  # se non ci sono parametri, viene stampato solo il pallino
  if [ $# -eq 0 ]; then
    printf %b "${ROSSO}•${FINE}\n" # stampa pallino e va a capo
  # se c'è un parametro, viene stampato il pallino e il parametro
  elif [ $# -eq 1 ]; then
    printf %b "${ROSSO}•${FINE}"
    tput cuf 3 # a destra di tre spazi
    tput el    # cancella fino a fine riga
    printf %b "$1\n" # stampa il parametro e va a capo
  fi
}


# Funzione che stampa in grassetto gli argomenti
# Funzione che stampa in grassetto gli argomenti
function _bold {
function _bold {
   printf %b "$BOLD"
   printf %b "${BOLD}"
   echo -n "$*"
   echo -n "$*"
   printf %b\\n "$FINE"
   printf %b\\n "${FINE}"
}
}


Riga 712: Riga 732:
       echo -n "File compresso da allegare alla discussione sul forum: "
       echo -n "File compresso da allegare alla discussione sul forum: "
       _bold "$complog"
       _bold "$complog"
    fi
   
    if [ -f "$script_debug" ]; then
      echo -n $"File contenente l'output di debug: "
      _bold "$script_debug"
     fi
     fi
   fi
   fi
    
    
   echo $'Script terminato\n'
   echo $'Script terminato\n'
  _close_debug
 
   exit 0
   exit 0
}
}
Riga 737: Riga 764:
   _comando "/bin/journalctl -x -b --no-pager -p warning"
   _comando "/bin/journalctl -x -b --no-pager -p warning"
   _comando "/usr/bin/systemd-cgtop -b --iterations=5"
   _comando "/usr/bin/systemd-cgtop -b --iterations=5"
   _comando "/usr/bin/systemd-cgls"
   _comando "/usr/bin/systemd-cgls -l"
   _comando "/usr/bin/systemd-delta"
   _comando "/usr/bin/systemd-delta"
   _comando "/bin/dmesg -l err"
   _comando "/bin/dmesg -l err"
Riga 1 291: Riga 1 318:


if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
  _debug
   _avvertenze
   _avvertenze
   _check
   _check
Riga 1 309: Riga 1 337:
== Changelog ==
== Changelog ==
<!-- Qui vanno inserite le spiegazioni di eventuali modifiche dello script (chi, cosa, quando). Ricordarsi di modificare la versione (variabile VERSIONE) all'interno del codice (la versione iniziale è 1.0.0) -->
<!-- Qui vanno inserite le spiegazioni di eventuali modifiche dello script (chi, cosa, quando). Ricordarsi di modificare la versione (variabile VERSIONE) all'interno del codice (la versione iniziale è 1.0.0) -->
;1.0.62
:''Inserito debug''
:''Inserita funzione _printdot (per evitare ripetizioni)''
:''Modifiche minori''
:[[Utente:S3v|S3v]] 17:41, 26 feb 2017 (CET)
;1.0.61
;1.0.61
:''Aggiunta funzione _header() (intestazione del file di log)''
:''Aggiunta funzione _header() (intestazione del file di log)''
6 999

contributi