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

1.0.55
(disabilitato comando "nmcli device show")
(1.0.55)
Riga 33: Riga 33:
;--nocompress:non crea il file compresso del file di log
;--nocompress:non crea il file compresso del file di log
;--nopaste:non invia il file di log a paste.debian.net
;--nopaste:non invia il file di log a paste.debian.net
:--update:aggiorna lo script se esiste una versione recente
;--base64:crea un file contenente la codifica base64 dello script
;--help:visualizza informazioni sull'utilizzo dei parametri
;--help:visualizza informazioni sull'utilizzo dei parametri


Riga 85: Riga 87:


# Versione script
# Versione script
readonly VERSIONE="1.0.54"
readonly VERSIONE="1.0.55"
 
# 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 97: Riga 102:
# 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"
# URL remoto della pagina contenente lo script codificato in base64
readonly SCRIPTURL_BASE64="http://guide.debianizzati.org/index.php?title=Aiuto:LogScript&action=edit"


# nome utente
# nome utente
Riga 177: Riga 188:
$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--base64$FINE
  viene creato un file con la codifica base64 dello script
    
    
$BOLD--help$FINE
$BOLD--help$FINE
Riga 187: Riga 204:
# 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
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 ;;
    "--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 570: Riga 589:
     echo $'\n'"Ultimo aggiornamento del sistema: ${convdate}" >> "$log"
     echo $'\n'"Ultimo aggiornamento del sistema: ${convdate}" >> "$log"
   fi
   fi
}
# Funzione che effettua l'aggiornamento automatico dello script
function _self_update {
  echo -n "Aggiornare questo script [S/n]? "
  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
    echo "Lo script è gia alla versione più recente"
  else
    echo -n "È disponibile una nuova versione dello script: " && _bold "$vers"
    echo -n "Procedere con l'aggiornamento [S/n]? "
    read risp
    case "$risp" in
      [Ss]|"")
          local tempfile="$(mktemp)" # viene creato un file temporaneo
          # lo script in formato base64 viene copiato nel file temporaneo
          wget -q -O- "$SCRIPTURL_BASE64" | sed -n "/^=S=/{n; :a /^==Fine/ ! {p; n; ba}}" | base64 -d | tar xz -O > "$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
}
# funzione che crea un file con la codifica base64 dello script
# Da utilizzare in caso di aggiornamenti per modificare la pagina
# http://guide.debianizzati.org/Aiuto:LogScript
function _base64 {
  echo -n "Verrà creato un file con la codifica base64 di questo script. Continuare [S/n]? "
  local risp
  read risp
  [ "$risp" != "" ] && [ "$risp" != "s" ] && [ "$risp" != "S" ] && _exit ||
    local tempfile="$(mktemp)" # crea un file temporaneo
    tar cf - "${BASH_SOURCE[0]}" | gzip -9 | base64 > "$tempfile"
    if [ $? -eq 0 ]; then
      echo -n "Il file contenente la codifica base64 di questo script è " && _bold "$tempfile"
    else
      echo "Codifica non riuscita"
    fi
}
}


Riga 575: Riga 653:
function _exit {
function _exit {


   local complog=""
# se è stato effettuato un update o una codifica base64 stampa solo il messaggio finale
   if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
    local complog=""


  if [ -f "$log" ]; then
    if [ -f "$log" ]; then
    echo -n $'\nFile contenente il log dello script: '
      echo -n $'\nFile contenente il log dello script: '
    _bold "$log"
      _bold "$log"
  else
    else
    echo $'\nNon è stato creato un file di log'
      echo $'\nNon è stato creato un file di log'
  fi
    fi


  if [ -f "${log}.xz" ]; then
    if [ -f "${log}.xz" ]; then
    complog="${log}.xz"
      complog="${log}.xz"
  elif [ -f "${log}.bz2" ]; then
    elif [ -f "${log}.bz2" ]; then
    complog="${log}.bz2"
      complog="${log}.bz2"
  elif [ -f "${log}.gz" ]; then
    elif [ -f "${log}.gz" ]; then
    complog="${log}.gz"
      complog="${log}.gz"
  fi
    fi


  if [ -z "$complog" ]; then   
    if [ -z "$complog" ]; then   
    echo "Non è stato creato un file compresso del log"
      echo "Non è stato creato un file compresso del log"
  else
    else
    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
   fi
   fi
    
    
Riga 666: Riga 747:
   _file "/etc/NetworkManager/NetworkManager.conf"
   _file "/etc/NetworkManager/NetworkManager.conf"
   _comando "/usr/bin/nmcli dev list"
   _comando "/usr/bin/nmcli dev list"
   #_comando "/usr/bin/nmcli device show"
   _comando "/usr/bin/nmcli device show"
   _demone "/usr/sbin/NetworkManager" "Network Manager"
   _demone "/usr/sbin/NetworkManager" "Network Manager"
   _demone "/usr/sbin/wicd" "Wicd"
   _demone "/usr/sbin/wicd" "Wicd"
Riga 855: Riga 936:
               # nasconde gli ESSID visualizzati da "nmcli device show" (solo per Jessie e superiori)
               # nasconde gli ESSID visualizzati da "nmcli device show" (solo per Jessie e superiori)
               "/usr/bin/nmcli device show")
               "/usr/bin/nmcli device show")
                   nmcli device show 2>/dev/null | sed -r "s/(^AP[[:digit:]]*\.SSID:[[:space:]]*).*/\1\*script removed\*/" >> "$log" && [ "${PIPESTATUS[0]}" -eq 0 ] && _ok || \
                   LANG=C nmcli device show 2>/dev/null | sed -r "s/(^AP[[:digit:]]*\.SSID:[[:space:]]*|GENERAL.CONNECTION:[[:space:]]*).*/\1\*script removed\*/" >> "$log" && [ "${PIPESTATUS[0]}" -eq 0 ] && _ok || \
                       ( _error && echo "Comando valido solo per Jessie" >> "$log" ) ;;
                       ( _error && echo "Comando valido solo per Jessie" >> "$log" ) ;;
               /bin/dmesg*)
               /bin/dmesg*)
Riga 1 126: Riga 1 207:
  fi
  fi


# Rimuove eventuali duplicati (esistono repository doppi in sources.list)
release="$(echo "$release" | sort -u)"
  # Numero di release trovate
  # Numero di release trovate
  local num=$(echo "$release" | sort -u | wc -l)
  local num=$(echo "$release" | wc -l)
    
    
  # Se il numero di release è diverso da 1, la funzione termina
  # Se il numero di release è diverso da 1, la funzione termina
Riga 1 167: Riga 1 251:
# Main
# Main
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
clear
clear


_intro
_intro
_avvertenze
 
_check
if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
_scelta
  _avvertenze
_hide
  _check
_upload
  _scelta
_compress
  _hide
  _upload
  _compress
elif [ "$UPDATE" -eq 1 ]; then
  _self_update
elif [ "$BASE64" -eq 1 ]; then
  _base64
fi
 
_exit
_exit


Riga 1 183: Riga 1 274:
== 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.55
:'''Opzioni per aggiornare lo script o crearne una codifica base64'''
:'''Corretti ESSID in "nmcli device show" non nascosti'''
:'''Rimozione duplicati in "release" (pacchetti esterni)'''
:[[Utente:S3v|S3v]] 21:26, 15 giu 2015 (CEST)
;1.0.54
;1.0.54
:''Correzioni minori legate alla compressione xz; semplificata lettura nome utente in caso di errori con logname''
:''Correzioni minori legate alla compressione xz; semplificata lettura nome utente in caso di errori con logname''
6 999

contributi