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

Annullata la modifica 38240 di S3v (discussione)
(Annullata la modifica 38241 di S3v (discussione))
(Annullata la modifica 38240 di S3v (discussione))
Riga 31: Riga 31:
== Parametri dello script ==
== Parametri dello script ==
Lo script accetta, in maniera facoltativa, alcuni parametri:
Lo script accetta, in maniera facoltativa, alcuni parametri:
;--update:effettua l'aggiornamento dello script se disponibile una nuova versione
;--tipo={rete|video|audio|apt|mount|touchpad|generico}:specifica il tipo di problema<br/>Es: --tipo=apt
;--tipo={rete|video|audio|apt|mount|touchpad|generico}:specifica il tipo di problema<br/>Es: --tipo=apt
;--nocompress:non crea il file compresso del file di log
;--nocompress:non crea il file compresso del file di log
Riga 74: Riga 73:


# Versione script
# Versione script
readonly VERSIONE="1.0.52"
readonly VERSIONE="1.0.51"
 
# Path e nome dello script
readonly PATH_NAME="$(readlink -f ${BASH_SOURCE[0]})"


# Codename per stable e testing. Da modificare nei successivi rilasci di Debian
# Codename per stable e testing. Da modificare nei successivi rilasci di Debian
Riga 89: Riga 85:
# 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')"
# URL remoto della pagina contenente lo script
readonly SCRIPTURL="http://guide.debianizzati.org/index.php?title=Creazione_automatica_di_un_file_di_log_per_inviare_quesiti_al_forum&action=edit"


# nome utente
# nome utente
Riga 165: Riga 158:
# Messaggio visualizzato nel caso in cui --help non sia l'unico parametro specificato
# Messaggio visualizzato nel caso in cui --help non sia l'unico parametro specificato
function _parm_uso_err {
function _parm_uso_err {
   echo "Il parametro "$1" non deve essere accompagnato da altri parametri" && _parm_uso
   echo "Il parametro --help non deve essere accompagnato da altri parametri" && _parm_uso
}
}


Riga 182: Riga 175:
$BOLD--nopaste$FINE
$BOLD--nopaste$FINE
   non viene inviato il log a paste.debian.net
   non viene inviato il log a paste.debian.net
 
$BOLD--update$FINE
  viene aggiornato lo script se è disponibile una nuova versione
    
    
$BOLD--help$FINE
$BOLD--help$FINE
Riga 195: Riga 185:
# nel passaggio del parametro tipo=blabla
# nel passaggio del parametro tipo=blabla
NOCOMPRESS=0 NOPASTE=0 TIPO=0 TIPO_RETE=0 TIPO_APT=0 TIPO_VIDEO=0
NOCOMPRESS=0 NOPASTE=0 TIPO=0 TIPO_RETE=0 TIPO_APT=0 TIPO_VIDEO=0
TIPO_AUDIO=0 TIPO_MNT=0 TIPO_TOUCH=0 TIPO_COMM=0 UPDATE=0
TIPO_AUDIO=0 TIPO_MNT=0 TIPO_TOUCH=0 TIPO_COMM=0


while [ $# -gt 0 ] ; do
while [ $# -gt 0 ] ; do
   case "$1" in
   case "$1" in
    "--update") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || UPDATE=1 ;;
     "--nocompress") [ "$NOCOMPRESS" -eq 1 ] && _parm_rip_err || NOCOMPRESS=1      ;;
     "--nocompress") [ "$NOCOMPRESS" -eq 1 ] && _parm_rip_err || NOCOMPRESS=1      ;;
     "--nopaste") [ "$NOPASTE" -eq 1 ] && _parm_rip_err || NOPASTE=1       ;;
     "--nopaste") [ "$NOPASTE" -eq 1 ] && _parm_rip_err || NOPASTE=1       ;;
Riga 209: Riga 198:
     "--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  ;;
     "--help") [ $BASH_ARGC -gt 1 ] && _parm_uso_err "$1" || _parm_uso            ;;
     "--help") [ $BASH_ARGC -gt 1 ] && _parm_uso_err || _parm_uso            ;;
     *) _parm_err
     *) _parm_err
   esac
   esac
Riga 579: Riga 568:
}
}


# Funzione che effettua l'aggiornamento automatico dello script
# Funzione che stampa un messaggio che indica i file creati e poi termina lo script
function _self_update {
function _exit {


  echo -n "Aggiornare questo script [S/n]? "
   local complog=""
  local risp
  read risp
  [ "$risp" != "" ] && [ "$risp" != "s" ] && [ "$risp" != "S" ] && _exit || echo "Aggiornamento in corso..."
 
  # Controlla l'esistenza di wget
  [ ! "$(which wget)" ] && echo "Impossibile eseguire l'aggiornamento. Installare il pacchetto wget." && _exit
 
  # Ricava la versione remota dello script
   local vers="$(wget -q -O- "$SCRIPTURL" | sed -n '/^readonly VERSIONE.*/{p;q}' | cut -d '"' -f2)"
  if [ "$vers" = "" ]; then
    echo "Connessione non riuscita" && _exit
  fi


   if [ "$vers" = "$VERSIONE" ]; then
   if [ -f "$log" ]; then
     echo "Lo script è gia alla versione più recente"
     echo -n $'\nFile contenente il log dello script: '
    _bold "$log"
   else
   else
     echo -n "È stata trovata una nuova versione dello script: " && _bold "$vers"
     echo $'\nNon è stato creato un file di log'
    echo -n "Procedere con l'aggiornamento [S/n]? "
    read risp
    case "$risp" in
      [Ss]|"")
          local tempfile="$(mktemp)" # viene creato un file temporaneo
          # lo script remoto viene copiato nel file temporaneo
          wget -q -O- "$SCRIPTURL" | sed -n "/^== Script/{n;:a n; /^&lt/ ! {s/\&amp;/\&/g; s/\&lt;/</g; p; ba}}" > "$tempfile"
          if [ ! -s "$tempfile" ]; then # Controlla se il file è vuoto
            echo "Connessione non riuscita"
          else
            cp "$tempfile" "$PATH_NAME"
            [ $? -eq 0 ] && echo "Aggiornamento effettuato" || echo "Aggiornamento fallito"
            rm -f "$tempfile" # Rimuove il file temporaneo
          fi ;;
      *)
          echo "Non è stato eseguito alcun aggiornamento"
    esac
   fi
   fi
}


# Funzione che stampa un messaggio che indica i file creati e poi termina lo script
  if [ -f "${log}.bz2" ]; then
function _exit {
    complog="${log}.bz2"
  elif [ -f "${log}.zip" ]; then
    complog="${log}.zip"
  elif [ -f "${log}.tgz" ]; then
    complog="${log}.tgz"
  fi


   # se è stato effettuato un update stampa solo il messaggio finale
   if [ -z "$complog" ]; then   
  if [ "$UPDATE" -eq 0 ]; then
    echo "Non è stato creato un file compresso del log"
    local complog=""
  else
 
    echo -n "File compresso da allegare alla discussione sul forum: "
    if [ -f "$log" ]; then
    _bold "$complog"
      echo -n $'\nFile contenente il log dello script: '
      _bold "$log"
    else
      echo $'\nNon è stato creato un file di log'
    fi
 
    if [ -f "${log}.bz2" ]; then
      complog="${log}.bz2"
    elif [ -f "${log}.zip" ]; then
      complog="${log}.zip"
    elif [ -f "${log}.tgz" ]; then
      complog="${log}.tgz"
    fi
 
    if [ -z "$complog" ]; then   
      echo "Non è stato creato un file compresso del log"
    else
      echo -n "File compresso da allegare alla discussione sul forum: "
      _bold "$complog"
    fi
   fi
   fi
   
 
   echo $'Script terminato\n'
   echo $'Script terminato\n'
   exit 0
   exit 0
Riga 1 222: Riga 1 167:


_intro
_intro
 
_avvertenze
if [ "$UPDATE" -eq 0 ]; then
_check
  _avvertenze
_scelta
  _check
_hide
  _scelta
_upload
  _hide
_compress
  _upload
  _compress
else
  _self_update
fi
 
_exit
_exit


Riga 1 240: Riga 1 179:
== 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.52
:''Possibilità di auto-aggiornamento dello script (parametro "--update")''
[[Utente:S3v|S3v]] 16:39, 5 mag 2015 (CEST)
;1.0.51
;1.0.51
:''Aggiunti comandi "systemctl --failed", "journal -x -b --no-pager [-p [err, warning]]",''
:''Aggiunti comandi "systemctl --failed", "journal -x -b --no-pager [-p [err, warning]]",''
6 999

contributi