6 999
contributi
S3v (discussione | contributi) (1.0.12) |
S3v (discussione | contributi) (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 | 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. | * 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" | ||
_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'' |
contributi