Creazione automatica di un file di log per inviare quesiti al forum: differenze tra le versioni
Aki (discussione | contributi) |
Aki (discussione | contributi) (→Script) |
||
Riga 39: | Riga 39: | ||
********************************************************************************* | ********************************************************************************* | ||
* www.debianizzati.org * | * www.debianizzati.org * | ||
* * | * * | ||
* 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.7 * | * Versione 1.0.7 * | ||
* * | * * | ||
********************************************************************************* | ********************************************************************************* | ||
TESTO | TESTO | ||
Riga 49: | Riga 49: | ||
# Funzione che stampa alcune avvertenze sullo script | # Funzione che stampa alcune avvertenze sullo script | ||
function _avvertenze { | function _avvertenze { | ||
local risp | |||
cat <<TESTO | cat <<TESTO | ||
-- Lo script richiede i permessi di root per essere eseguito | -- Lo script richiede i permessi di root per essere eseguito | ||
Riga 57: | Riga 57: | ||
-- Verrà creato un file in formato compresso da inviare al forum | -- Verrà creato un file in formato compresso da inviare al forum | ||
TESTO | TESTO | ||
echo -n "Continuare [S/n]? " | |||
read risp | |||
case $risp in | |||
""|[Ss]) | |||
;; | |||
*) | |||
echo -e "Uscita\n" | |||
exit 1 | |||
;; | |||
esac | |||
} | } | ||
# Funzione che esegue un check preliminare | # Funzione che esegue un check preliminare | ||
function _check { | function _check { | ||
if [[ $EUID -ne 0 ]]; then # Lo script viene lanciato da root? | if [[ $EUID -ne 0 ]]; then # Lo script viene lanciato da root? | ||
echo "Lo script deve essere lanciato da root" | |||
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 | ||
# creati, lo script chiede se cancellarli o meno | # creati, lo script chiede se cancellarli o meno | ||
local risp | local risp | ||
if [ -f ./log.txt -o -f ./log.zip -o -f ./log.txt.bz2 -o -f ./log.tgz ]; then | if [ -f ./log.txt -o -f ./log.zip -o -f ./log.txt.bz2 -o -f ./log.tgz ]; then | ||
echo -n "Esiste già un file log.txt, log.zip, log.txt.bz2 o log.tgz nella directory corrente. Sovrascivere [S/n]? " | |||
read risp | |||
case $risp in | |||
""|[Ss]) | |||
rm -f $log log.zip log.txt.bz2 log.tgz | |||
;; | |||
*) | |||
exit 1 | |||
;; | |||
esac | |||
fi | fi | ||
} | } | ||
# -------------------------------------------------------------------------- | # -------------------------------------------------------------------------- | ||
# Funzione per separare il log in parti per l'invio a paste.debian.net | # Funzione per separare il log in parti per l'invio a paste.debian.net | ||
# -------------------------------------------------------------------------- | # -------------------------------------------------------------------------- | ||
function _split_and_send { | function _split_and_send { | ||
local paste_url='http://paste.debian.net' | |||
local chunk_prefix='pastebin' | local chunk_prefix='pastebin' | ||
local chunk_num=1 | local chunk_num=1 | ||
local paste_exit_status=0 | |||
# dimensione massima del singolo file da inviare | |||
local chunk_size=' | # dimensione massima del singolo file da inviare | ||
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 | ||
Riga 115: | Riga 117: | ||
# 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 ) | ||
if [ $chunk_num = 1 ]; | if [ $chunk_num = 1 ]; then | ||
echo -e "\nIl log sarà inviato in un singolo file." | echo -e "\nIl log sarà inviato in un singolo file." | ||
else | else | ||
Riga 122: | Riga 123: | ||
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 | ||
if [ -f $chunkfile ]; then | |||
# verifica l'esistenza del file da inviare | |||
if [ -f $chunkfile ]; then | |||
# invia dati tramite pastebinit | |||
pastelink="$(pastebinit -a '' -b $paste_url -i $chunkfile)" | |||
if [ $? = 0 ]; then | |||
# invio apparentemente riuscito (pastebinit exit status = 0) | |||
# controlla URL restituita da pastebinit | |||
case $pastelink in | |||
# verifica in caso di url corretta | |||
"$paste_url"/[0-9]*) | |||
echo ".. inviato $chunkfile all'indirizzo $pastelink" | |||
;; | |||
# verifica in caso di url non corretta | |||
*) | |||
echo ".. $paste_url ha restituito una URL non valida ($pastelink) per $chunkfile!" | |||
paste_exit_status=1 | |||
;; | |||
esac | |||
else | |||
# Invio fallito (pastebinit exit status = 1) | |||
echo ".. non riuscito invio $chunkfile" | |||
paste_exit_status=1 | |||
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 | return $paste_exit_status | ||
} | } | ||
Riga 146: | Riga 170: | ||
# -------------------------------------------------------------------------- | # -------------------------------------------------------------------------- | ||
function _upload { | function _upload { | ||
local pastelink | |||
local risp | |||
# Pastebinit è installato? | |||
if [ ! -f /usr/bin/pastebinit ]; then | |||
echo -e "\nNon è possibile inviare il log a paste.debian.net\nIl pacchetto 'pastebinit' non è installato." | |||
return 1 | |||
fi | |||
# Invia il file log.txt a paste.debian.net | |||
echo -en "\nInviare il log a http://paste.debian.net [S/n]? " | |||
read risp | |||
case $risp in | |||
""|[Ss]) | |||
_split_and_send | _split_and_send | ||
if [ $? == 0 ]; then | |||
echo -e "\nIl log è stato inviato" | |||
else | |||
echo -e "\nSi sono verificati errori nell'invio del log!" | |||
fi | |||
;; | |||
*) | |||
echo "Il log non è stato inviato" | |||
;; | |||
esac | |||
} | } | ||
Riga 172: | Riga 201: | ||
# Funzione richiamata in caso di corretta creazione del file compresso | # Funzione richiamata in caso di corretta creazione del file compresso | ||
function _compress_ok { | function _compress_ok { | ||
echo "Il file compresso $1 è stato creato correttamente nella directory corrente." | |||
echo -e "Allegare questo file alla discussione sul forum.\n" | |||
# Imposta i permessi di lettura-scrittura sul file per tutti gli utenti | |||
chmod 666 $1 | |||
} | } | ||
# Funzione richiamata in caso di errore nella creazione del file compresso | # Funzione richiamata in caso di errore nella creazione del file compresso | ||
function _compress_err { | function _compress_err { | ||
echo -e "\nErrore nella creazione del file compresso $1." | |||
} | } | ||
Riga 186: | Riga 215: | ||
# Prova a creare nell'ordine: un file .bz2, un file .zip o un file .tgz | # Prova a creare nell'ordine: un file .bz2, un file .zip o un file .tgz | ||
function _compress { | function _compress { | ||
local risp | |||
echo -en "\nCreare un file compresso [S/n]? " | |||
read risp | |||
case $risp in | |||
""|[Ss]) | |||
echo -e "\nSta per essere creato un file compresso..." | |||
sleep 2 | |||
if [ -f /bin/bzip2 ]; then | |||
bzip2 -k9 $log && _compress_ok log.txt.bz2 || _compress_err log.txt.bz2 | bzip2 -k9 $log && _compress_ok log.txt.bz2 || _compress_err log.txt.bz2 | ||
elif [ -f /usr/bin/zip ]; then | |||
zip log.zip $log && _compress_ok log.zip || _compress_err log.zip | zip log.zip $log && _compress_ok log.zip || _compress_err log.zip | ||
else | |||
tar czf log.tgz $log && _compress_ok log.tgz || _compress_err log.tgz | |||
fi | |||
;; | |||
*) | |||
;; | |||
esac | |||
} | } | ||
Riga 213: | Riga 242: | ||
# Funzione che stampa due righe vuote | # Funzione che stampa due righe vuote | ||
function _spazi { | function _spazi { | ||
echo >> $log | |||
echo >> $log | |||
} | } | ||
# Funzione che stampa un pallino di colore verde in caso di comando con output | # Funzione che stampa un pallino di colore verde in caso di comando con output | ||
function _ok { | function _ok { | ||
/bin/echo -e " $1" "\033[35G\033[01;32m•\033[0m" | |||
} | } | ||
# Funzione che stampa una pallino rosso in caso di comando privo di output | # Funzione che stampa una pallino rosso in caso di comando privo di output | ||
function _error { | function _error { | ||
/bin/echo -e " $1" "\033[35G\033[01;31m•\033[0m" | |||
} | } | ||
Riga 231: | Riga 260: | ||
# parametro della funzione -> $1 ) | # parametro della funzione -> $1 ) | ||
function nome_e_riga { | function nome_e_riga { | ||
cat <<FINE >> $log | cat <<FINE >> $log | ||
****************************************** | ****************************************** | ||
$1 | $1 | ||
Riga 240: | Riga 269: | ||
# Funzione che stampa un messaggio di attesa e aspetta 2 secondi | # Funzione che stampa un messaggio di attesa e aspetta 2 secondi | ||
function _wait { | function _wait { | ||
echo -e "\nCreazione del log in corso. Attendere pochi secondi...\n" | |||
sleep 2 | |||
} | } | ||
Riga 250: | Riga 279: | ||
# Questo array contiene tutte le funzioni utilizzate per il log | # Questo array contiene tutte le funzioni utilizzate per il log | ||
# dei comandi. | # dei comandi. | ||
# Per aggiungere una nuova funzione, inserire qui il suo nome e | # Per aggiungere una nuova funzione, inserire qui il suo nome e | ||
# scriverne il codice in basso. | # scriverne il codice in basso. | ||
comandi=( | comandi=( | ||
_dmi_decode | _dmi_decode | ||
_unamea | _unamea | ||
_version | _version | ||
_dmesg | _dmesg | ||
_lsmod | _lsmod | ||
_lspci | _lspci | ||
_lsusb | _lsusb | ||
_fdisk | _fdisk | ||
_fstab | _fstab | ||
_mount | _mount | ||
_df | _df | ||
_xorg_log | _xorg_log | ||
_sources | _sources | ||
_apt_cache | _apt_cache | ||
_apt_get_check | _apt_get_check | ||
_interfaces | _interfaces | ||
_hosts | _hosts | ||
_ifconfig | _ifconfig | ||
_ping | _ping | ||
_ip | _ip | ||
_iwconfig | _iwconfig | ||
_iwlist | _iwlist | ||
_route | _route | ||
_resolvconf | _resolvconf | ||
_resolvconf2 | _resolvconf2 | ||
_firmware | _firmware | ||
_dhcp | _dhcp | ||
_dhclient | _dhclient | ||
_nm | _nm | ||
_wicd | _wicd | ||
_iptables | _iptables | ||
) | ) | ||
Riga 295: | Riga 324: | ||
# comando 'cat /sys/class/dmi/id/{sys_vendor,product_name,product_version,bios_version}' | # comando 'cat /sys/class/dmi/id/{sys_vendor,product_name,product_version,bios_version}' | ||
function _dmi_decode { | function _dmi_decode { | ||
local var="cat /sys/class/dmi/id/*" | |||
nome_e_riga "$var" | |||
if [ -f /sys/class/dmi/id/sys_vendor ]; then | |||
echo 'Produttore:' $(cat /sys/class/dmi/id/sys_vendor) &>> $log | |||
echo 'Prodotto: ' $(cat /sys/class/dmi/id/product_name) &>> $log | |||
echo 'Versione: ' $(cat /sys/class/dmi/id/product_version) &>> $log | |||
echo 'BIOS vers.:' $(cat /sys/class/dmi/id/bios_version) &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File /sys/class/dmi/id/sys_vendor non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'uname -a' | # comando 'uname -a' | ||
function _unamea { | function _unamea { | ||
local var="uname -a" | |||
nome_e_riga "$var" | |||
if [ -x /bin/uname ]; then | |||
/bin/uname -a &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/debian/version' | # comando 'cat /etc/debian/version' | ||
function _version { | function _version { | ||
local var="/etc/debian_version" | |||
nome_e_riga "$var" | |||
if [ -f /etc/debian_version ]; then | |||
cat /etc/debian_version &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Il file /etc/debian_version non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'dmesg' | # comando 'dmesg' | ||
function _dmesg { | function _dmesg { | ||
local var="dmesg" | |||
nome_e_riga "$var" | |||
if [ -x /bin/dmesg ]; then | |||
/bin/dmesg &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'lsmod' | # comando 'lsmod' | ||
function _lsmod { | function _lsmod { | ||
local var="lsmod" | |||
nome_e_riga "$var" | |||
if [ -x /bin/lsmod ]; then | |||
/bin/lsmod &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'lspci' | # comando 'lspci' | ||
function _lspci { | function _lspci { | ||
local var="lspci" | |||
nome_e_riga "$var" | |||
if [ -x /usr/bin/lspci ]; then | |||
/usr/bin/lspci -knn &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'lsusb' | # comando 'lsusb' | ||
function _lsusb { | function _lsusb { | ||
local var="lsusb" | |||
nome_e_riga "$var" | |||
if [ -x /usr/bin/lsusb ]; then | |||
/usr/bin/lsusb &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'fdisk' | # comando 'fdisk' | ||
function _fdisk { | function _fdisk { | ||
local var="fdisk -l" | |||
nome_e_riga "$var" | |||
if [ -x /sbin/fdisk ]; then | |||
/sbin/fdisk -l &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# file /etc/fstab | # file /etc/fstab | ||
function _fstab { | function _fstab { | ||
local var="/etc/fstab" | |||
nome_e_riga "$var" | |||
if [ -f /etc/fstab ]; then | |||
cat /etc/fstab &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Il file $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'mount' | # comando 'mount' | ||
function _mount { | function _mount { | ||
local var="mount" | |||
nome_e_riga "$var" | |||
if [ -x /bin/mount ]; then | |||
/bin/mount &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'df' | # comando 'df' | ||
function _df { | function _df { | ||
local var="df -h" | |||
nome_e_riga "$var" | |||
if [ -x /bin/df ]; then | |||
/bin/df -h &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# log del server X | # log del server X | ||
function _xorg_log { | function _xorg_log { | ||
local var="/var/log/Xorg.0.log" | |||
nome_e_riga "$var" | |||
if [ -f /var/log/Xorg.0.log ]; then | |||
cat /var/log/Xorg.0.log &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/apt/sources.list' | # comando 'cat /etc/apt/sources.list' | ||
function _sources { | function _sources { | ||
local var="/etc/apt/sources.list" | |||
nome_e_riga "$var" | |||
if [ -f /etc/apt/sources.list ]; then | |||
ls -l /etc/apt/sources.list &>> $log || _error "$var" | |||
echo "" >> $log | |||
cat /etc/apt/sources.list &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'apt_cache' | # comando 'apt_cache' | ||
function _apt_cache { | function _apt_cache { | ||
local var="apt-cache policy" | |||
nome_e_riga "$var" | |||
if [ -x /usr/bin/apt-cache ]; then | |||
/usr/bin/apt-cache policy &>> $log && _ok "$var" || _error "$var" | |||
_spazi | |||
var="apt-cache stats" | |||
nome_e_riga "$var" | |||
/usr/bin/apt-cache stats &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'apt_get_check' | # comando 'apt_get_check' | ||
function _apt_get_check { | function _apt_get_check { | ||
local var="apt-get check" | |||
nome_e_riga "$var" | |||
if [ -x /usr/bin/apt-get ]; then | |||
/usr/bin/apt-get check &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/network/interfaces' | # comando 'cat /etc/network/interfaces' | ||
function _interfaces { | function _interfaces { | ||
local var="/etc/newtork/interfaces" | |||
nome_e_riga "$var" | |||
if [ -f /etc/network/interfaces ]; then | |||
ls -l /etc/network/interfaces &>> $log || _error "$var" | |||
echo "" >> $log | |||
cat /etc/network/interfaces &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/hosts' | # comando 'cat /etc/hosts' | ||
function _hosts { | function _hosts { | ||
local var="/etc/hosts" | |||
nome_e_riga "$var" | |||
if [ -f /etc/hosts ]; then | |||
cat /etc/hosts &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File /etc/hosts non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comandi 'ifconfig' e 'ifconfig -a' | # comandi 'ifconfig' e 'ifconfig -a' | ||
function _ifconfig { | function _ifconfig { | ||
local var="ifconfig" | |||
nome_e_riga "$var" | |||
if [ -x /sbin/ifconfig ]; then | |||
/sbin/ifconfig &>> $log && _ok "$var" || _error "$var" | |||
_spazi | |||
nome_e_riga "$var -a" | |||
ifconfig -a &>> $log && _ok "$var -a" || _error "$var -a" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'ping -c3 8.8.8.8' | # comando 'ping -c3 8.8.8.8' | ||
function _ping { | function _ping { | ||
local var="ping" | |||
#Ping verso l'IP del DNS di Google 8.8.8.8 | |||
local host="8.8.8.8" | |||
nome_e_riga "$var" | |||
if [ -x /bin/ping ]; then | |||
/bin/ping -c3 $host &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'iwconfig' | # comando 'iwconfig' | ||
function _iwconfig { | function _iwconfig { | ||
local var="iwconfig" | |||
local tmpfile=$(/bin/tempfile) | local tmpfile=$(/bin/tempfile) | ||
nome_e_riga "$var" | |||
if [ -x /sbin/iwconfig ]; then | |||
/sbin/iwconfig > $tmpfile 2>&1 | /sbin/iwconfig > $tmpfile 2>&1 | ||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
_ok "$var" | _ok "$var" | ||
/bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log | /bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log | ||
else | else | ||
_error "$var" | _error "$var" | ||
fi | fi | ||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | echo "Comando $var non trovato" >> $log && _error "$var" | ||
fi | |||
rm $tmpfile | |||
} | } | ||
# comando 'iwlist scan' | # comando 'iwlist scan' | ||
function _iwlist { | function _iwlist { | ||
local var="iwlist scan" | |||
local tmpfile=$(/bin/tempfile) | |||
nome_e_riga "$var" | |||
if [ -x /sbin/iwlist ]; then | |||
/sbin/iwlist scan > $tmpfile 2>&1 | /sbin/iwlist scan > $tmpfile 2>&1 | ||
if [ $? = 0 ]; then | if [ $? = 0 ]; then | ||
_ok "$var" | _ok "$var" | ||
/bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log | /bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log | ||
else | else | ||
_error "$var" | _error "$var" | ||
fi | fi | ||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
rm $tmpfile | |||
} | } | ||
# comandi 'ip addrr list' e 'ip route list' | # comandi 'ip addrr list' e 'ip route list' | ||
function _ip { | function _ip { | ||
if [ -x /bin/ip ]; then | |||
nome_e_riga "ip addr list" | |||
/bin/ip addr list &>> $log && _ok "ip addr list" || _error "ip addr list" | |||
_spazi | |||
nome_e_riga "ip route list" | |||
/bin/ip route list &>> $log && _ok "ip route list" || _error "ip route list" | |||
else | |||
echo "Comando ip non trovato" >> $log && _error "ip" | |||
fi | |||
} | } | ||
# comando 'route -n' | # comando 'route -n' | ||
function _route { | function _route { | ||
local var="route" | |||
nome_e_riga "$var -n" | |||
if [ -x /sbin/route ]; then | |||
/sbin/route -n &>> $log && _ok "$var -n" || _error "$var -n" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'iptables -L' | # comando 'iptables -L' | ||
function _iptables { | function _iptables { | ||
local var="iptables" | |||
nome_e_riga "$var" | |||
if [ -x /sbin/iptables ]; then | |||
/sbin/iptables -L &>> $log && _ok "$var -L" || _error "$var -L" | |||
else | |||
echo "Comando $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/resolv.conf' | # comando 'cat /etc/resolv.conf' | ||
function _resolvconf2 { | function _resolvconf2 { | ||
local var="/etc/resolv.conf" | |||
nome_e_riga "$var" | |||
if [ -f /etc/resolv.conf ]; then | |||
ls -l /etc/resolv.conf &>> $log || _error "$var" | |||
echo "" >> $log | |||
cat /etc/resolv.conf &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File $var non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# esistenza del pacchetto 'resolvconf' | # esistenza del pacchetto 'resolvconf' | ||
function _resolvconf { | function _resolvconf { | ||
local var="resolvconf" | |||
nome_e_riga "$var" | |||
if [ $(dpkg -l | grep -ci resolvconf) -eq 0 ]; then | |||
echo "Il pacchetto resolvconf non è installato" >> $log && _error "$var" | |||
else | |||
dpkg -l | grep -i resolvconf >> $log && _ok "$var" | |||
fi | |||
} | } | ||
# esistenza di pacchetti contenenti firmware e firmware presente sulla macchina | # esistenza di pacchetti contenenti firmware e firmware presente sulla macchina | ||
function _firmware { | function _firmware { | ||
local var="Firmware" | |||
local i | |||
nome_e_riga "$var" | |||
dpkg -l | grep -i firmware >> $log && _ok "$var" | |||
# Array contenente tre directory | |||
local firm_dir=(/usr/lib/firmware /usr/local/lib/firmware /lib/firmware) | |||
for ((i=0; i<${#firm_dir[@]}; i++)); do | for ((i=0; i<${#firm_dir[@]}; i++)); do | ||
if [ -d ${firm_dir[$i]} ]; then | |||
echo "Contenuto di ${firm_dir[$i]}" >> $log | |||
ls -al ${firm_dir[$i]} >> $log | |||
else | |||
echo "${firm_dir[$i]} non trovato" >> $log | |||
fi | |||
done | done | ||
} | } | ||
Riga 635: | Riga 664: | ||
# esistenza di pacchetti riguardanti DHCP | # esistenza di pacchetti riguardanti DHCP | ||
function _dhcp { | function _dhcp { | ||
local var="DHCP" | |||
nome_e_riga "$var" | |||
if [ $(dpkg -l | grep -ci dhcp) -eq 0 ]; then | |||
echo "Nessun pacchetto DHCP installato" >> $log && _error "$var" | |||
else | |||
dpkg -l | grep -i dhcp >> $log && _ok "$var" | |||
fi | |||
} | } | ||
# comando 'cat /etc/dhclient.conf' | # comando 'cat /etc/dhclient.conf' | ||
function _dhclient { | function _dhclient { | ||
local var="/etc/dhclient.conf" | |||
nome_e_riga "$var" | |||
if [ -f /etc/dhclient.conf ]; then | |||
cat /etc/dhclient.conf &>> $log && _ok "$var" || _error "$var" | |||
else | |||
echo "File /etc/dhclient.conf non trovato" >> $log && _error "$var" | |||
fi | |||
} | } | ||
# esistenza di Network Manager | # esistenza di Network Manager | ||
function _nm { | function _nm { | ||
local var="Network Manager" | |||
nome_e_riga "$var" | |||
if [ -n "$(dpkg -l | cut -d ' ' -f3 | egrep -i '^network-manager$')" ]; then | |||
echo "Network Manager è installato (versione "$(NetworkManager --version)")" >> $log && _ok "$var" | |||
invoke-rc.d network-manager status &>/dev/null | |||
if [ $? -eq 0 ]; then | |||
echo "Network Manager è in esecuzione" >> $log | |||
else | |||
echo "Network Manager non è in esecuzione" >> $log | |||
fi | |||
else | else | ||
echo "Network Manager non è installato" >> $log && _error "$var" | |||
fi | fi | ||
} | } | ||
# esistenza di Wicd | # esistenza di Wicd | ||
function _wicd { | function _wicd { | ||
local var="Wicd" | |||
nome_e_riga "$var" | |||
if [ -n "$(dpkg -l | grep -i 'wicd')" ]; then | |||
echo "Wicd è installato" >> $log && _ok "$var" | |||
if [ -n "$(invoke-rc.d wicd status | grep "is running")" ]; then | |||
echo "Wicd è in esecuzione" >> $log | |||
else | |||
echo "Wicd non è in esecuzione" >> $log | |||
fi | |||
else | else | ||
echo "Wicd non è installato" >> $log && _error "$var" | |||
fi | fi | ||
} | } | ||
Riga 702: | Riga 731: | ||
# Ciclo sull'array di funzioni | # Ciclo sull'array di funzioni | ||
for ((i=0; i<${#comandi[@]}; i++)); do | for ((i=0; i<${#comandi[@]}; i++)); do | ||
${comandi[$i]} | |||
_spazi | |||
sleep 1 | |||
done | done | ||
echo -e "\nIl file $log è stato creato correttamente nella directory corrente." | echo -e "\nIl file $log è stato creato correttamente nella directory corrente." |
Versione delle 10:34, 2 mag 2013
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Questo script permette la creazione di un file contenente informazioni utili che è possibile portare a conoscenza del forum per tentare di risolvere insieme i problemi più comuni.
Lo script crea due file:
- log.txt
- contiene le informazioni in formato testo
- log.{txt.bz2,zip,tgz}
- il file precedente ma in formato compresso. Può essere allegato ad una discussione sul forum
Attraverso lo script è anche possibile inviare il file direttamente a 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.
Prima di effettuare l'invio, lo script chiede un esplicito consenso all'utente.
Per usufruire del servizio offerto da paste.debian.net è necessaria l'installazione del pacchetto pastebinit
:
# apt-get install pastebinit
Nota Lo script è liberamente modificabile. Per ogni segnalazione, informazione o suggerimento fare riferimento a questa discussione sul forum. |
Utilizzo
- Copiare il codice dello script in un file di testo. Il nome del file può essere scelto liberamente.
- Dare i permessi di esecuzione al file appena creato. Supponendo che si chiami nomefile:
$ chmod +x nomefile
- Eseguire lo script con i permessi di root:
# ./nomefile
il comando precedente presuppone che sia eseguito nella stessa directory in cui risiede lo script.
L'esecuzione con i permessi di root si rende necessaria poiché alcuni comandi devono essere eseguiti necessariamente come utente privilegiato. - Leggere le informazioni a video.
Script
#!/bin/bash # Nome del file di log log="log.txt" # -------------------------------------------------------------------------- # Funzioni iniziali # -------------------------------------------------------------------------- # Funzione che stampa il messaggio introduttivo function _intro { cat <<TESTO ********************************************************************************* * www.debianizzati.org * * * * Script che crea un log utile alla risoluzione dei problemi più comuni * * Versione 1.0.7 * * * ********************************************************************************* TESTO } # Funzione che stampa alcune avvertenze sullo script function _avvertenze { local risp cat <<TESTO -- Lo script richiede i permessi di root per essere eseguito -- Per inviare il log su paste.debian.net è necessario il pacchetto 'pastebinit' -- L'invio del log a paste.debian.net avverrà solo dopo esplicito consenso -- Verrà creato un file (log.txt) contenente l'output di questo script -- Verrà creato un file in formato compresso da inviare al forum TESTO echo -n "Continuare [S/n]? " read risp case $risp in ""|[Ss]) ;; *) echo -e "Uscita\n" exit 1 ;; esac } # Funzione che esegue un check preliminare function _check { if [[ $EUID -ne 0 ]]; then # Lo script viene lanciato da root? echo "Lo script deve essere lanciato da root" exit 1 fi # Se esiste già un file di log con lo stesso nome oppure # file compressi con lo stesso nome di quelli che verranno # creati, lo script chiede se cancellarli o meno local risp if [ -f ./log.txt -o -f ./log.zip -o -f ./log.txt.bz2 -o -f ./log.tgz ]; then echo -n "Esiste già un file log.txt, log.zip, log.txt.bz2 o log.tgz nella directory corrente. Sovrascivere [S/n]? " read risp case $risp in ""|[Ss]) rm -f $log log.zip log.txt.bz2 log.tgz ;; *) exit 1 ;; esac fi } # -------------------------------------------------------------------------- # Funzione per separare il log in parti per l'invio a paste.debian.net # -------------------------------------------------------------------------- function _split_and_send { local paste_url='http://paste.debian.net' local chunk_prefix='pastebin' local chunk_num=1 local paste_exit_status=0 # dimensione massima del singolo file da inviare local chunk_size='60k' # rinomina parti di log preesistenti (se ve ne sono) # scarta i messaggi di errore (se presenti) 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 # scarta i messaggi di errore (se presenti) per log di dimensione superiore a 10 parti # (max 10 parti con l'opzione -a) split -a 1 -d -C $chunk_size $log $chunk_prefix. > /dev/null 2>&1 # comunica il numero di parti inviate chunk_num=$( ls -1 $chunk_prefix.* | wc -l ) if [ $chunk_num = 1 ]; then echo -e "\nIl log sarà inviato in un singolo file." else echo -e "\nIl log sarà inviato in $chunk_num parti." fi # invia al massimo 4 parti echo -e "\nIl log è consultabile ai seguenti indirizzi:" for chunkfile in $chunk_prefix.{0..3}; do # verifica l'esistenza del file da inviare if [ -f $chunkfile ]; then # invia dati tramite pastebinit pastelink="$(pastebinit -a '' -b $paste_url -i $chunkfile)" if [ $? = 0 ]; then # invio apparentemente riuscito (pastebinit exit status = 0) # controlla URL restituita da pastebinit case $pastelink in # verifica in caso di url corretta "$paste_url"/[0-9]*) echo ".. inviato $chunkfile all'indirizzo $pastelink" ;; # verifica in caso di url non corretta *) echo ".. $paste_url ha restituito una URL non valida ($pastelink) per $chunkfile!" paste_exit_status=1 ;; esac else # Invio fallito (pastebinit exit status = 1) echo ".. non riuscito invio $chunkfile" paste_exit_status=1 fi fi done # cancella i parti di log inviati # scarta i messaggi di errore (se presenti) rm $chunk_prefix.{0..9} > /dev/null 2>&1 return $paste_exit_status } # -------------------------------------------------------------------------- # Funzione che invia il log a paste.debian.net # -------------------------------------------------------------------------- function _upload { local pastelink local risp # Pastebinit è installato? if [ ! -f /usr/bin/pastebinit ]; then echo -e "\nNon è possibile inviare il log a paste.debian.net\nIl pacchetto 'pastebinit' non è installato." return 1 fi # Invia il file log.txt a paste.debian.net echo -en "\nInviare il log a http://paste.debian.net [S/n]? " read risp case $risp in ""|[Ss]) _split_and_send if [ $? == 0 ]; then echo -e "\nIl log è stato inviato" else echo -e "\nSi sono verificati errori nell'invio del log!" fi ;; *) echo "Il log non è stato inviato" ;; esac } # -------------------------------------------------------------------------- # Funzioni di creazione del file compresso e messaggi di successo/fallimento # -------------------------------------------------------------------------- # Funzione richiamata in caso di corretta creazione del file compresso function _compress_ok { echo "Il file compresso $1 è stato creato correttamente nella directory corrente." echo -e "Allegare questo file alla discussione sul forum.\n" # Imposta i permessi di lettura-scrittura sul file per tutti gli utenti chmod 666 $1 } # Funzione richiamata in caso di errore nella creazione del file compresso function _compress_err { echo -e "\nErrore nella creazione del file compresso $1." } # Funzione che crea il file compresso # Prova a creare nell'ordine: un file .bz2, un file .zip o un file .tgz function _compress { local risp echo -en "\nCreare un file compresso [S/n]? " read risp case $risp in ""|[Ss]) echo -e "\nSta per essere creato un file compresso..." sleep 2 if [ -f /bin/bzip2 ]; then bzip2 -k9 $log && _compress_ok log.txt.bz2 || _compress_err log.txt.bz2 elif [ -f /usr/bin/zip ]; then zip log.zip $log && _compress_ok log.zip || _compress_err log.zip else tar czf log.tgz $log && _compress_ok log.tgz || _compress_err log.tgz fi ;; *) ;; esac } # -------------------------------------------------------------------------- # Funzioni varie # -------------------------------------------------------------------------- # Funzione che stampa due righe vuote function _spazi { echo >> $log echo >> $log } # Funzione che stampa un pallino di colore verde in caso di comando con output function _ok { /bin/echo -e " $1" "\033[35G\033[01;32m•\033[0m" } # Funzione che stampa una pallino rosso in caso di comando privo di output function _error { /bin/echo -e " $1" "\033[35G\033[01;31m•\033[0m" } # Funzione che invia nel file di log due righe tra le quali # viene visualizzato il nome del comando ( passato come primo # parametro della funzione -> $1 ) function nome_e_riga { cat <<FINE >> $log ****************************************** $1 ****************************************** FINE } # Funzione che stampa un messaggio di attesa e aspetta 2 secondi function _wait { echo -e "\nCreazione del log in corso. Attendere pochi secondi...\n" sleep 2 } # -------------------------------------------------------------------------- # Array che contiene la lista delle funzioni # -------------------------------------------------------------------------- # Questo array contiene tutte le funzioni utilizzate per il log # dei comandi. # Per aggiungere una nuova funzione, inserire qui il suo nome e # scriverne il codice in basso. comandi=( _dmi_decode _unamea _version _dmesg _lsmod _lspci _lsusb _fdisk _fstab _mount _df _xorg_log _sources _apt_cache _apt_get_check _interfaces _hosts _ifconfig _ping _ip _iwconfig _iwlist _route _resolvconf _resolvconf2 _firmware _dhcp _dhclient _nm _wicd _iptables ) # -------------------------------------------------------------------------- # Funzioni contenute nell'array # -------------------------------------------------------------------------- # comando 'cat /sys/class/dmi/id/{sys_vendor,product_name,product_version,bios_version}' function _dmi_decode { local var="cat /sys/class/dmi/id/*" nome_e_riga "$var" if [ -f /sys/class/dmi/id/sys_vendor ]; then echo 'Produttore:' $(cat /sys/class/dmi/id/sys_vendor) &>> $log echo 'Prodotto: ' $(cat /sys/class/dmi/id/product_name) &>> $log echo 'Versione: ' $(cat /sys/class/dmi/id/product_version) &>> $log echo 'BIOS vers.:' $(cat /sys/class/dmi/id/bios_version) &>> $log && _ok "$var" || _error "$var" else echo "File /sys/class/dmi/id/sys_vendor non trovato" >> $log && _error "$var" fi } # comando 'uname -a' function _unamea { local var="uname -a" nome_e_riga "$var" if [ -x /bin/uname ]; then /bin/uname -a &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'cat /etc/debian/version' function _version { local var="/etc/debian_version" nome_e_riga "$var" if [ -f /etc/debian_version ]; then cat /etc/debian_version &>> $log && _ok "$var" || _error "$var" else echo "Il file /etc/debian_version non trovato" >> $log && _error "$var" fi } # comando 'dmesg' function _dmesg { local var="dmesg" nome_e_riga "$var" if [ -x /bin/dmesg ]; then /bin/dmesg &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'lsmod' function _lsmod { local var="lsmod" nome_e_riga "$var" if [ -x /bin/lsmod ]; then /bin/lsmod &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'lspci' function _lspci { local var="lspci" nome_e_riga "$var" if [ -x /usr/bin/lspci ]; then /usr/bin/lspci -knn &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'lsusb' function _lsusb { local var="lsusb" nome_e_riga "$var" if [ -x /usr/bin/lsusb ]; then /usr/bin/lsusb &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'fdisk' function _fdisk { local var="fdisk -l" nome_e_riga "$var" if [ -x /sbin/fdisk ]; then /sbin/fdisk -l &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # file /etc/fstab function _fstab { local var="/etc/fstab" nome_e_riga "$var" if [ -f /etc/fstab ]; then cat /etc/fstab &>> $log && _ok "$var" || _error "$var" else echo "Il file $var non trovato" >> $log && _error "$var" fi } # comando 'mount' function _mount { local var="mount" nome_e_riga "$var" if [ -x /bin/mount ]; then /bin/mount &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'df' function _df { local var="df -h" nome_e_riga "$var" if [ -x /bin/df ]; then /bin/df -h &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # log del server X function _xorg_log { local var="/var/log/Xorg.0.log" nome_e_riga "$var" if [ -f /var/log/Xorg.0.log ]; then cat /var/log/Xorg.0.log &>> $log && _ok "$var" || _error "$var" else echo "File $var non trovato" >> $log && _error "$var" fi } # comando 'cat /etc/apt/sources.list' function _sources { local var="/etc/apt/sources.list" nome_e_riga "$var" if [ -f /etc/apt/sources.list ]; then ls -l /etc/apt/sources.list &>> $log || _error "$var" echo "" >> $log cat /etc/apt/sources.list &>> $log && _ok "$var" || _error "$var" else echo "File $var non trovato" >> $log && _error "$var" fi } # comando 'apt_cache' function _apt_cache { local var="apt-cache policy" nome_e_riga "$var" if [ -x /usr/bin/apt-cache ]; then /usr/bin/apt-cache policy &>> $log && _ok "$var" || _error "$var" _spazi var="apt-cache stats" nome_e_riga "$var" /usr/bin/apt-cache stats &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'apt_get_check' function _apt_get_check { local var="apt-get check" nome_e_riga "$var" if [ -x /usr/bin/apt-get ]; then /usr/bin/apt-get check &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'cat /etc/network/interfaces' function _interfaces { local var="/etc/newtork/interfaces" nome_e_riga "$var" if [ -f /etc/network/interfaces ]; then ls -l /etc/network/interfaces &>> $log || _error "$var" echo "" >> $log cat /etc/network/interfaces &>> $log && _ok "$var" || _error "$var" else echo "File $var non trovato" >> $log && _error "$var" fi } # comando 'cat /etc/hosts' function _hosts { local var="/etc/hosts" nome_e_riga "$var" if [ -f /etc/hosts ]; then cat /etc/hosts &>> $log && _ok "$var" || _error "$var" else echo "File /etc/hosts non trovato" >> $log && _error "$var" fi } # comandi 'ifconfig' e 'ifconfig -a' function _ifconfig { local var="ifconfig" nome_e_riga "$var" if [ -x /sbin/ifconfig ]; then /sbin/ifconfig &>> $log && _ok "$var" || _error "$var" _spazi nome_e_riga "$var -a" ifconfig -a &>> $log && _ok "$var -a" || _error "$var -a" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'ping -c3 8.8.8.8' function _ping { local var="ping" #Ping verso l'IP del DNS di Google 8.8.8.8 local host="8.8.8.8" nome_e_riga "$var" if [ -x /bin/ping ]; then /bin/ping -c3 $host &>> $log && _ok "$var" || _error "$var" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'iwconfig' function _iwconfig { local var="iwconfig" local tmpfile=$(/bin/tempfile) nome_e_riga "$var" if [ -x /sbin/iwconfig ]; then /sbin/iwconfig > $tmpfile 2>&1 if [ $? = 0 ]; then _ok "$var" /bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log else _error "$var" fi else echo "Comando $var non trovato" >> $log && _error "$var" fi rm $tmpfile } # comando 'iwlist scan' function _iwlist { local var="iwlist scan" local tmpfile=$(/bin/tempfile) nome_e_riga "$var" if [ -x /sbin/iwlist ]; then /sbin/iwlist scan > $tmpfile 2>&1 if [ $? = 0 ]; then _ok "$var" /bin/sed -e 's/ESSID:.*/ESSID:"*script-removed*"/g' -e '/^[ ]*IE: Unknown:.*/d' $tmpfile &>> $log else _error "$var" fi else echo "Comando $var non trovato" >> $log && _error "$var" fi rm $tmpfile } # comandi 'ip addrr list' e 'ip route list' function _ip { if [ -x /bin/ip ]; then nome_e_riga "ip addr list" /bin/ip addr list &>> $log && _ok "ip addr list" || _error "ip addr list" _spazi nome_e_riga "ip route list" /bin/ip route list &>> $log && _ok "ip route list" || _error "ip route list" else echo "Comando ip non trovato" >> $log && _error "ip" fi } # comando 'route -n' function _route { local var="route" nome_e_riga "$var -n" if [ -x /sbin/route ]; then /sbin/route -n &>> $log && _ok "$var -n" || _error "$var -n" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'iptables -L' function _iptables { local var="iptables" nome_e_riga "$var" if [ -x /sbin/iptables ]; then /sbin/iptables -L &>> $log && _ok "$var -L" || _error "$var -L" else echo "Comando $var non trovato" >> $log && _error "$var" fi } # comando 'cat /etc/resolv.conf' function _resolvconf2 { local var="/etc/resolv.conf" nome_e_riga "$var" if [ -f /etc/resolv.conf ]; then ls -l /etc/resolv.conf &>> $log || _error "$var" echo "" >> $log cat /etc/resolv.conf &>> $log && _ok "$var" || _error "$var" else echo "File $var non trovato" >> $log && _error "$var" fi } # esistenza del pacchetto 'resolvconf' function _resolvconf { local var="resolvconf" nome_e_riga "$var" if [ $(dpkg -l | grep -ci resolvconf) -eq 0 ]; then echo "Il pacchetto resolvconf non è installato" >> $log && _error "$var" else dpkg -l | grep -i resolvconf >> $log && _ok "$var" fi } # esistenza di pacchetti contenenti firmware e firmware presente sulla macchina function _firmware { local var="Firmware" local i nome_e_riga "$var" dpkg -l | grep -i firmware >> $log && _ok "$var" # Array contenente tre directory local firm_dir=(/usr/lib/firmware /usr/local/lib/firmware /lib/firmware) for ((i=0; i<${#firm_dir[@]}; i++)); do if [ -d ${firm_dir[$i]} ]; then echo "Contenuto di ${firm_dir[$i]}" >> $log ls -al ${firm_dir[$i]} >> $log else echo "${firm_dir[$i]} non trovato" >> $log fi done } # esistenza di pacchetti riguardanti DHCP function _dhcp { local var="DHCP" nome_e_riga "$var" if [ $(dpkg -l | grep -ci dhcp) -eq 0 ]; then echo "Nessun pacchetto DHCP installato" >> $log && _error "$var" else dpkg -l | grep -i dhcp >> $log && _ok "$var" fi } # comando 'cat /etc/dhclient.conf' function _dhclient { local var="/etc/dhclient.conf" nome_e_riga "$var" if [ -f /etc/dhclient.conf ]; then cat /etc/dhclient.conf &>> $log && _ok "$var" || _error "$var" else echo "File /etc/dhclient.conf non trovato" >> $log && _error "$var" fi } # esistenza di Network Manager function _nm { local var="Network Manager" nome_e_riga "$var" if [ -n "$(dpkg -l | cut -d ' ' -f3 | egrep -i '^network-manager$')" ]; then echo "Network Manager è installato (versione "$(NetworkManager --version)")" >> $log && _ok "$var" invoke-rc.d network-manager status &>/dev/null if [ $? -eq 0 ]; then echo "Network Manager è in esecuzione" >> $log else echo "Network Manager non è in esecuzione" >> $log fi else echo "Network Manager non è installato" >> $log && _error "$var" fi } # esistenza di Wicd function _wicd { local var="Wicd" nome_e_riga "$var" if [ -n "$(dpkg -l | grep -i 'wicd')" ]; then echo "Wicd è installato" >> $log && _ok "$var" if [ -n "$(invoke-rc.d wicd status | grep "is running")" ]; then echo "Wicd è in esecuzione" >> $log else echo "Wicd non è in esecuzione" >> $log fi else echo "Wicd non è installato" >> $log && _error "$var" fi } # -------------------------------------------------------------------------- # Main # -------------------------------------------------------------------------- clear _intro _avvertenze _check _wait # Ciclo sull'array di funzioni for ((i=0; i<${#comandi[@]}; i++)); do ${comandi[$i]} _spazi sleep 1 done echo -e "\nIl file $log è stato creato correttamente nella directory corrente." _upload _compress # Permessi di lettura e scrittura per tutti # poiché il file di log viene creato da root chmod 666 $log exit 0
Changelog
- 1.0.7
- Aggiunta funzionalità per identificazione produttore e modello del computer secondo lo standard SMBIOS/DMI
- Aggiunta rimozione valore ESSID dall'output del comando iwconfig
- Aggiunto controllo esito invio log verso http://paste.debian.net (in caso di falito invio)
- Anticipazione ed unificazione nell'ordine del codice sorgente delle sezioni relative al controllo del sistema apt
- Aki 13:40 27 apr 2013 (CEST);
1.0.6
- Aggiunta funzionalità per verifiche sullo stato del gestiore dei pacchetti (comandi apt-cache policy, apt-cache status)
- Aki 10:39 26 apr 2013 (CEST)
- 1.0.5
- Aggiunta funzionalità frammentazione log per invio a http://paste.debian.net
- Aggiunta funzionalità per verifiche sullo stato dei dischi (comandi fdisk -l , mount, df -h)
- Aggiunta funzionalità per verifica del file /etc/fstab
- Apportate alcune variazioni ai messaggi diagnostici
- Collegamento con la guida su Come formulare quesiti tecnici al forum
- Aki 13:30 25 apr 2013 (CEST)
- 1.0.4
- Tolto qualche echo e inserito un messaggio di mancato invio log a p.d.n
- S3v 18:15, 20 apr 2013 (CEST)
- 1.0.3
- Aggiunta rimozione valore ESSID dalla scansione delle reti wireless
- Aki 20:34 14 apr 2013 (CEST)
- 1.0.2
- Aggiunta avvertenza su esplicito consenso all'invio verso paste.debian.net
- S3v 14:56, 14 apr 2013 (CEST)
- 1.0.1
- Corretta la funzione "dmesg" che svuotava il buffer e non produceva output
- S3v 12:22, 14 apr 2013 (CEST)
Guida scritta da: S3v 23:38, 13 apr 2013 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |