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

Vai alla navigazione Vai alla ricerca
1.0.13
(1.0.12)
(1.0.13)
Riga 9: Riga 9:
Attraverso lo script è anche possibile inviare il file direttamente a [http://paste.debian.net paste.debian.net] per poterlo condividere pubblicamente.
Attraverso lo script è anche possibile inviare il file direttamente a [http://paste.debian.net paste.debian.net] per poterlo condividere pubblicamente.


In questo caso il file non potrà superare la grandezza complessiva di 320K circa (diviso in parti della dimensione massima di 80K circa) e le informazioni saranno disponibili a chiunque per una settimana.<br/>
In questo caso il file non potrà superare la grandezza complessiva di 320K circa (diviso in parti della dimensione massima di 60K circa) e le informazioni saranno disponibili a chiunque per una settimana.<br/>


Prima di effettuare l'invio, lo script chiede un esplicito consenso all'utente.<br/>
Prima di effettuare l'invio, lo script chiede un esplicito consenso all'utente.<br/>
Riga 47: Riga 47:
*                                                                              *
*                                                                              *
*  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.12                                                             *
*  Versione 1.0.13                                                             *
*                                                                              *
*                                                                              *
*********************************************************************************"
*********************************************************************************"
Riga 79: Riga 79:
     exit 1
     exit 1
   fi
   fi
 
   # Se esiste già un file di log con lo stesso nome oppure
   # Se esiste già un file di log con lo stesso nome oppure
   # file compressi con lo stesso nome di quelli che verranno
   # file compressi con lo stesso nome di quelli che verranno
Riga 107: Riga 107:
   local paste_exit_status=0
   local paste_exit_status=0
   local chunkfile pastelink
   local chunkfile pastelink
 
   # dimensione massima del singolo file da inviare  
   # dimensione massima del singolo file da inviare
   local chunk_size='60k'
   local chunk_size='60k'
 
   # rinomina parti di log preesistenti (se ve ne sono)
   # rinomina parti di log preesistenti (se ve ne sono)
   # scarta i messaggi di errore (se presenti)
   # scarta i messaggi di errore (se presenti)
   rename "s/$chunk_prefix/old-$chunk_prefix-$(date +%s)/g" $chunk_prefix.* > /dev/null 2>&1
   rename "s/$chunk_prefix/old-$chunk_prefix-$(date +%s)/g" $chunk_prefix.* > /dev/null 2>&1
 
   # dividi il file di log in parti di $chunk_size bytes senza spezzare le linee
   # dividi il file di log in parti di $chunk_size bytes senza spezzare le linee
   # scarta i messaggi di errore (se presenti) per log di dimensione superiore a 10 parti
   # scarta i messaggi di errore (se presenti) per log di dimensione superiore a 10 parti
   # (max 10 parti con l'opzione -a)
   # (max 10 parti con l'opzione -a)
   split -a 1 -d -C $chunk_size $log $chunk_prefix. > /dev/null 2>&1
   split -a 1 -d -C $chunk_size $log $chunk_prefix. > /dev/null 2>&1
 
   # comunica il numero di parti inviate
   # comunica il numero di parti inviate
   chunk_num=$( ls -1 $chunk_prefix.* | wc -l )
   chunk_num=$( ls -1 $chunk_prefix.* | wc -l )
Riga 127: Riga 127:
       echo -e "\nIl log sarà inviato in $chunk_num parti."
       echo -e "\nIl log sarà inviato in $chunk_num parti."
   fi
   fi
 
   # invia al massimo 4 parti
   # invia al massimo 4 parti
   echo -e "\nIl log è consultabile ai seguenti indirizzi:"
   echo -e "\nIl log è consultabile ai seguenti indirizzi:"
   for chunkfile in $chunk_prefix.{0..3}; do
   for chunkfile in $chunk_prefix.{0..3}; do
 
     # verifica l'esistenza del file da inviare
     # verifica l'esistenza del file da inviare
     if [ -f $chunkfile ]; then
     if [ -f $chunkfile ]; then
Riga 137: Riga 137:
     # invia dati tramite pastebinit
     # invia dati tramite pastebinit
     pastelink="$(pastebinit -a '' -b $paste_url -i $chunkfile)"
     pastelink="$(pastebinit -a '' -b $paste_url -i $chunkfile)"
       
     
     if [ $? = 0 ]; then
     if [ $? = 0 ]; then
         # invio apparentemente riuscito (pastebinit exit status = 0)
         # invio apparentemente riuscito (pastebinit exit status = 0)
       
     
         # controlla URL restituita da pastebinit
         # controlla URL restituita da pastebinit
         case $pastelink in  
         case $pastelink in
         # verifica in caso di url corretta
         # verifica in caso di url corretta
         "$paste_url"/[0-9]*)  
         "$paste_url"/[0-9]*)
             echo ".. inviato $chunkfile all'indirizzo $pastelink"  
             echo ".. inviato $chunkfile all'indirizzo $pastelink"
             ;;  
             ;;
         # verifica in caso di url non corretta
         # verifica in caso di url non corretta
         *)
         *)
Riga 153: Riga 153:
             ;;
             ;;
         esac
         esac
   
 
     else
     else
         # Invio fallito (pastebinit exit status = 1)
         # Invio fallito (pastebinit exit status = 1)
Riga 159: Riga 159:
         paste_exit_status=1
         paste_exit_status=1
         fi
         fi
   
 
     fi
     fi
 
   done
   done
 
   # cancella i parti di log inviati
   # cancella i parti di log inviati
   # scarta i messaggi di errore (se presenti)
   # scarta i messaggi di errore (se presenti)
   rm $chunk_prefix.{0..9} > /dev/null 2>&1
   rm $chunk_prefix.{0..9} > /dev/null 2>&1
 
   return $paste_exit_status
   return $paste_exit_status
}
}
Riga 186: Riga 186:
   case $risp in
   case $risp in
     ""|[Ss])
     ""|[Ss])
       _split_and_send  
       _split_and_send
       if [ $? == 0 ]; then
       if [ $? == 0 ]; then
       echo -e "\nIl log è stato inviato"  
       echo -e "\nIl log è stato inviato"
       else
       else
       echo -e "\nSi sono verificati errori nell'invio del log!"
       echo -e "\nSi sono verificati errori nell'invio del log!"
Riga 243: Riga 243:
function _scelta {
function _scelta {
   local num
   local num
 
   echo "
   echo "
Selezionare il tipo di problema per il quale verrà generato il file di log
Selezionare il tipo di problema per il quale verrà generato il file di log
Riga 253: Riga 253:
   read num
   read num
     case $num in
     case $num in
       1)  
       1)
         _wait
         _wait
         _tutti
         _tutti
Riga 265: Riga 265:
         tput ed # cancella fino alla fine dello schermo
         tput ed # cancella fino alla fine dello schermo
         ;;
         ;;
     esac  
     esac
   done
   done
}
}
Riga 314: Riga 314:
   _comando "/bin/uname -a"
   _comando "/bin/uname -a"
   _file "/etc/debian_version"
   _file "/etc/debian_version"
   _file "/var/log/syslog.1"
   _syslog
  _file "/var/log/syslog"
   _comando "/bin/lsmod"
   _comando "/bin/lsmod"
   _comando "/usr/bin/lspci -knn"
   _comando "/usr/bin/lspci -knn"
Riga 390: Riga 389:
   else
   else
     echo "File /sys/class/dmi/id/sys_vendor non trovato" >> $log && _error "$var"
     echo "File /sys/class/dmi/id/sys_vendor non trovato" >> $log && _error "$var"
  fi
}
# file /var/log/syslog e /var/log/syslog.1
function _syslog {
  local var="/var/log/syslog"
  local var2="/var/log/syslog.1"
  # se il file contiene la stringa "rsyslogd.*start" ...
  if [ `egrep -ci "rsyslogd.*start$" $var` -ne 0 ]; then
    nome_e_riga $var
    # ... estrae da syslog tutto il contenuto dall'ultima occorrenza della stringa alla fine del file
    sed -n 'H; /rsyslogd.*start$/h; ${g;p;}' $var >> $log && _ok $var || _error $var
  else
    # se syslog non contiene quella stringa, allora si effettuerà la stessa operazione su syslog.1
    # in questo caso l'intero contenuto del file syslog viene inviato al log
    nome_e_riga $var2
    sed -n 'H; /rsyslogd.*start$/h; ${g;p;}' $var2 >> $log && _ok $var2 || _error $var2
    nome_e_riga $var
    cat $var &>> $log && _ok $var || _error $var 
   fi
   fi
}
}
Riga 524: Riga 543:
== 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.13
:''Reinserita la funzione _syslog per prelevare l'ultimo output utile solo da syslog o, eventualmente,''
:''da syslog.1 e syslog''
:[[Utente:S3v|S3v]] 16:07, 1 giu 2013 (CEST)
;1.0.12
;1.0.12
:''Inserito il path di default''
:''Inserito il path di default''
6 999

contributi

Menu di navigazione