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

Vai alla navigazione Vai alla ricerca
1.0.35
(1.0.35)
Riga 31: Riga 31:
<pre>
<pre>
#!/bin/bash
#!/bin/bash
# Codename per stable e testing. Da modificare nei successivi rilasci di Debian
STABLE="wheezy"
TESTING="jessie"


# Path dei comandi dello script
# Path dei comandi dello script
Riga 50: Riga 54:


# Codici stile carattere
# Codici stile carattere
ROSSO="\033[01;31m" # colore rosso
ROSSO="\033[01;31m" # colore rosso e grassetto
VERDE="\033[01;32m" # colore verde
VERDE="\033[01;32m" # colore verde e grassetto
BOLD="\033[01m"     # grassetto
BOLD="\033[01m"       # grassetto
FINE="\033[0m"     # reset
FINE="\033[0m"         # reset




Riga 67: Riga 71:
*                                                                              *
*                                                                              *
*  Script che crea un log utile alla risoluzione dei problemi più comuni        *
*  Script che crea un log utile alla risoluzione dei problemi più comuni        *
*  Versione 1.0.34                                                             *
*  Versione 1.0.35                                                             *
*                                                                              *
*                                                                              *
*********************************************************************************"
*********************************************************************************"
Riga 217: Riga 221:
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------


# Funzione richiamata in caso di corretta creazione del file compresso
# Funzione richiamata in caso di corretta/scorretta creazione del file compresso
function _compress_ok {
function _compress_ok {
  echo "File compresso creato correttamente nella directory corrente."
echo "File compresso creato correttamente nella directory corrente."
}
}


# Funzione richiamata in caso di errore nella creazione del file compresso
function _compress_err {
function _compress_err {
  echo "Errore nella creazione del file compresso."
echo "Errore nella creazione del file compresso."
}
}


Riga 276: Riga 279:
     read num
     read num
     case $num in
     case $num in
      [1-7]) _wait  ;;& # ;;& -> va alla successiva occorrenza del carattere immesso
        [1-7]) _wait  ;;& # ;;& -> va alla successiva occorrenza del carattere immesso
      1) _rete  ;;&
            1) echo -e "### Problemi di rete ###\n"            > $log && _rete  ;;&
      2) _video  ;;&
            2) echo -e "### Problemi video ###\n"              > $log && _video  ;;&
      3) _audio  ;;&
            3) echo -e "### Problemi audio ###\n"              > $log && _audio  ;;&
      4) _apt    ;;&
            4) echo -e "### Problemi APT ###\n"                > $log && _apt    ;;&
      5) _mount  ;;&
            5) echo -e "### Problemi mount-unmount ###\n"      > $log && _mount  ;;&
      6) _tpad  ;;&
            6) echo -e "### Problemi touchpad ###\n"          > $log && _tpad  ;;&
      7) _common ;;&
            7) echo -e "### Solo informazioni generiche ###\n" > $log && _common ;;&
      [1-7]) break  ;; # Termina il ciclo 'while'
        [1-7]) break  ;; # Termina il ciclo 'while'
       0) _exit  ;; # È stato inserito '0' . Uscita dallo script
       0) _exit  ;; # È stato inserito '0' . Uscita dallo script
       *) # Tutti gli altri caratteri. Cancella l'input immesso e ripete la domanda
       *) # Tutti gli altri caratteri. Cancella l'input immesso e ripete la domanda
Riga 330: Riga 333:
function _hide {
function _hide {


  # Sostituisce il nome utente e il nome host con 'nomeutente' e 'nomehost'
  # Sostituisce il nome utente e il nome host con 'nomeutente' e 'nomehost' se diversi da [dD]ebian
  sed -i -e "s/$nomehost/nomehost/g" -e "s/$utente/nomeutente/g" $log
  [ "$nomehost" != "Debian" -a "$nomehost" != "debian" ] && sed -i -e "s/$nomehost/nomehost/g" $log
[ "$utente" != "Debian" -a "$utente" != "debian" ] && sed -i -e "s/$utente/nomeutente/g" $log


  # Nasconde gli ESSID gestiti attraverso Network Manager
  # Nasconde gli ESSID gestiti attraverso Network Manager
  local var file mydir="/etc/NetworkManager/system-connections/"
  local var file mydir="/etc/NetworkManager/system-connections/"


  if [ -d $mydir ]; then # se esiste la directory /etc/NetworkManager/system-connection...
  if [ -d $mydir ]; then # se esiste la directory /etc/NetworkManager/system-connections/ ...
     for file in $mydir/*; do # ciclo attraverso il contenuto della directory
     for file in $mydir/*; do # ciclo attraverso il contenuto della directory
       if [ -f "$file" ]; then # se l'elemento è un file...
       if [ -f "$file" ]; then # se l'elemento è un file...
Riga 352: Riga 356:


# Stabilisce la data dell'ultimo aggiornamento effettuato. Viene preso in
# Stabilisce la data dell'ultimo aggiornamento effettuato. Viene preso in
# considerazione il file /var/log/apt/history.log
# considerazione il file /var/log/apt/history.log oppure il file /var/log/apt/history.log.1,gz
function _lastupd {
function _lastupd {
   local convdate lastdate file=/var/log/apt/history.log
   local convdate lastdate file=/var/log/apt/history.log
    
    
   if [ -f "$file" ]; then
   if [ -f "$file" -a -f "$file.1.gz" ]; then
     lastdate=`sed -n '/^Start-Date/h ; $p' $file | awk '{print $2}'`
     lastdate=`sed -n '/^Start-Date/h ; $p' $file | awk '{print $2}'`
    # se il file history.log non contiene la data dell'ultimo aggiornamento, viene utilizzato history.log.1.gz
    [ -z "$lastdate" ] && lastdate=`zcat $file.1.gz | sed -n '/^Start-Date/h ; $p' | awk '{print $2}'`
     # variabile che contiene la data in formato "giorno mese anno"
     # variabile che contiene la data in formato "giorno mese anno"
     convdate=`date +%d\ %B\ %Y -d "$lastdate"`
     convdate=`date +%d\ %B\ %Y -d "$lastdate"`
Riga 514: Riga 521:
}
}


# Funzione relativa a problemi di mount/umount
# Funzione relativa a problemi di mount/unmount
function _mount {
function _mount {
   _common
   _common
Riga 699: Riga 706:
     echo "$2 è installato (versione "$vers")" >> $log && _ok "$2"
     echo "$2 è installato (versione "$vers")" >> $log && _ok "$2"
     invoke-rc.d "$var" status &>/dev/null
     invoke-rc.d "$var" status &>/dev/null
     if [ $? -eq 0 ]; then
     [ $? -eq 0 ] && echo "$2 è in esecuzione" >> $log || echo "$2 non è in esecuzione" >> $log
      echo "$2 è in esecuzione" >> $log
    else
      echo "$2 non è in esecuzione" >> $log
    fi
   else
   else
     echo "$2 non è installato" >> $log && _error "$2"
     echo "$2 non è installato" >> $log && _error "$2"
Riga 757: Riga 760:
   fi
   fi
}
}
# Funzione di supporto a _extpack.
# Aggiunge alla lista dei pacchetti esterni l'origine dalla quale provengono
# $1 = lista di pacchetti esterni
# $2 = nome dell'archivio (stable, testing, unstable)
# $3 = nome da visualizzare sullo schermo
function _extpack_supp {
  local origine linea
  # Variabile che contiene i pacchetti esterni passati a questa funzione
  local pacchetti=`echo "$1"`
  # Variabile che contiene le fonti di pacchetti disponibili
  local listaorigini=`apt-cache policy | sed -e '/o=/!d' -e 's/^.*o=//' -e 's/,.*$//' | sort | uniq`
  # File temporaneo
  local filetemporaneo=`mktemp`
  # ciclo sulle origini
  while read origine; do
      # solo nome dei pacchetti installati, non appartenenti a $2 e provenienti da origini
      # elencate nella variabile "listaorigini". Il file filetemporaneo conterrà i nomi dei pacchetti
      eval "aptitude -F '%p' search '~i ?not(?archive($2)) ?origin($origine)' > $filetemporaneo"
     
      # ciclo sui pacchetti precedentemente trovati. Viene aggiunta ad ogni riga l'origine del pacchetto
      while read linea; do
  pacchetti=`echo "$pacchetti" | sed -e "/$linea/ s/$/ $origine/"`
      done < $filetemporaneo
  done <<< "$listaorigini"
 
  # Invia al log la lista dei pacchetti comprensiva di origine
  echo "$pacchetti" >> $log && _ok "$3"
 
  # Rimuove il file temporaneo
  rm -f $filetemporaneo
}


# Funzione che elenca i pacchetti non appartenenti alla release di default utilizzata
# Funzione che elenca i pacchetti non appartenenti alla release di default utilizzata
Riga 800: Riga 768:
   # "deb http://ftp.XX.debian.org" e che *non* contengono un nome di release.
   # "deb http://ftp.XX.debian.org" e che *non* contengono un nome di release.
   # Con "cut" viene prelevato il terzo campo (la release voluta)
   # Con "cut" viene prelevato il terzo campo (la release voluta)
   local release=`sed -e 's/^ *//' -e '/^deb http:\/\/ftp\...\.debian\.org.*\(wheezy \|stable \|jessie \|testing \|sid \|unstable \)/!d' /etc/apt/sources.list | cut -d ' ' -f3`
   local release=`sed -e 's/^ *//' -e '/^deb http:\/\/ftp\...\.debian\.org.*\('$STABLE' \|stable \|'$TESTING' \|testing \|sid \|unstable \)/!d' /etc/apt/sources.list | cut -d ' ' -f3`
    
    
   # Numero di release trovate
   # Numero di release trovate
Riga 818: Riga 786:
   # Se il numero di release è uguale a 1, la variabile pkg conterrà i pacchetti *non* facenti parte della release
   # Se il numero di release è uguale a 1, la variabile pkg conterrà i pacchetti *non* facenti parte della release
   case $release in
   case $release in
         wheezy|stable)
         $STABLE|stable)
release="stable"
release="stable"
pkg=`aptitude -F '%p %v %t' search '~i !~Astable'  --disable-columns | column -t` ;;
pkg=`aptitude -F '%p %v %t' search '~i !~Astable'  --disable-columns | column -t` ;;
         jessie|testing)
         $TESTING|testing)
release="testing"
release="testing"
pkg=`aptitude -F '%p %v %t' search '~i !~Atesting'  --disable-columns | column -t` ;;
pkg=`aptitude -F '%p %v %t' search '~i !~Atesting'  --disable-columns | column -t` ;;
         sid|unstable)
         sid|unstable)
release="unstable"
release="unstable"
pkg=`aptitude -F '%p %v %t' search '~i !~Aunstable' --disable-columns | column -t` ;;
pkg=`aptitude -F '%p %v %t' search '~i !~Aunstable' --disable-columns | column -t` ;;
   esac
   esac


   # Invia al log il contenuto di pkg (se esiste) attraverso _extpack_supp
   # Invia al log il contenuto di pkg (se esiste)
   nome_e_riga "$var all'archivio \"$release\""
   nome_e_riga "$var all'archivio \"$release\""
   if [ -z "$pkg" ]; then
   [ -z "$pkg" ]; then
     echo "Nessun pacchetto esterno installato" >> $log && _error "$var"
     echo "Nessun pacchetto esterno installato" >> $log && _error "$var"
   else
   else
     _extpack_supp "$pkg" "$release" "$var"
     echo "$pkg" >> $log && _ok $var
   fi
   fi
}
}
Riga 856: Riga 824:
== Changelog ==
== Changelog ==
<!-- Qui vanno inserite le spiegazioni di eventuali modifiche dello script (chi, cosa, quando). Ricordarsi di modificare la 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 all'interno del codice (la versione iniziale è 1.0.0) -->
;1.0.35
:''All'inizio del log viene visualizzato il tipo di problema scelto''
:''Non vengono nascosti il nome utente e il nome host se uguali a [Dd]ebian
:''La data dell'ultimo aggiornamento viene prelevata da <code>history.log.1.gz</code>''
:''se non contenuta in <code>history.log</code>''
:''Rimossa la funzione <code>_extpack_supp</code> (lentissima)''
:''Modifiche minori''
:[[Utente:S3v|S3v]] 13:00, 4 lug 2014 (CEST)
:''
;1.0.34
;1.0.34
:''Corretta la variabile contenente spazi''
:''Corretta la variabile contenente spazi''
6 999

contributi

Menu di navigazione