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

1.0.68
m (ridotta la gravità dell'avviso)
(1.0.68)
Riga 87: Riga 87:
# Intercettazione Ctrl+C
# Intercettazione Ctrl+C
trap _exit INT
trap _exit INT
# Abilitazione dell'opzione 'extdebug' necessaria per espandere ARGC in
# Bash 5 e versioni successive
shopt -s extdebug


# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
Riga 103: Riga 107:
   else
   else
     printf %s\\n "$*"
     printf %s\\n "$*"
  fi
}
# Sostituisce il comando 'cat' per controllare che al file di log
# venga inviato effettivamente il contenuto di un file di testo
function cat {
  if [ "$(file -bL $1)" = 'ASCII text' ]; then
    /bin/cat "$1"
  else
    echo "File non di testo"
   fi
   fi
}
}
Riga 111: Riga 125:


# Versione script
# Versione script
readonly VERSIONE="1.0.67"
readonly VERSIONE="1.0.68"


# Path e nome dello script
# Path e nome dello script
Riga 394: Riga 408:
  # 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
  *)
  *)
      echo ".. ${paste_url} ha restituito una URL non valida (${pastelink}) per ${chunkfile}!"
      echo ".. ${paste_url} ha restituito una URL non valida (${pastelink}) per ${chunkfile}!"
Riga 456: Riga 470:
# --------------------------------------------------------------------------
# --------------------------------------------------------------------------


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


Riga 633: Riga 647:
  sed -i -r "s/(NetworkManager.*Activation: starting connection ').*(')/\1\*script-removed\*\2/g" "$log"
  sed -i -r "s/(NetworkManager.*Activation: starting connection ').*(')/\1\*script-removed\*\2/g" "$log"
  sed -i -r "s/(NetworkManager.*policy: set ').*(')/\1\*script-removed\*\2/g" "$log"
  sed -i -r "s/(NetworkManager.*policy: set ').*(')/\1\*script-removed\*\2/g" "$log"
# Nasconde l'indirizzo MAC delle interfacce wireless
local interfaces macaddress line
if [ -f /proc/net/wireless ]; then
  # array che contiene i nomi delle interfacce wireless
  mapfile -s 2 interfaces < <(awk -F'[: ]+' '{ print $2 }' /proc/net/wireless)
  for i in "${interfaces[@]}"; do
    # indirizzo MAC dell'interfaccia solo se l'interfaccia
    # ne ha uno. Non viene considerata l'interfaccia di loopback
    line="$(ip -br link show $i)"
    if [ "$(echo $line | wc -w)" -gt 3 ] && [ $i != "lo" ]; then
      macaddress="$(awk '{ print $3 }' <<< $line)"
      # l'indirizzo MAC viene nascosto nel file
      sed -i "s/$macaddress/\*script-removed\*/g" "$log"
    fi
  done
fi
}
}


Riga 647: Riga 679:
    
    
   if [ -f "$file" ]; then
   if [ -f "$file" ]; then
     lastdate=$(sed -n '/^Start-Date/h ; $p' "$file" | awk '{print $2}')
     lastdate=$(sed -n '/^Start-Date/h ; $p' "$file" | cut -d ' ' -f 2)
     # se il file history.log non contiene la data dell'ultimo aggiornamento, viene utilizzato history.log.1.gz
     # se il file history.log non contiene la data dell'ultimo aggiornamento, viene utilizzato history.log.1.gz
     [ -z "$lastdate" ] && [ -f "${file}.1.gz" ] && lastdate=$(zcat "${file}.1.gz" | sed -n '/^Start-Date/h ; $p' | awk '{print $2}')
     [ -z "$lastdate" ] && [ -f "${file}.1.gz" ] && lastdate=$(zcat "${file}.1.gz" | sed -n '/^Start-Date/h ; $p' | cut -d ' ' -f 2)


     # variabile che contiene la data in formato "giorno mese anno"
     # variabile che contiene la data in formato "giorno mese anno"
Riga 722: Riga 754:
function _exit {
function _exit {


# se è stato effettuato un update o una codifica base64 stampa solo il messaggio finale
# se è stato effettuato un update o una codifica base64, stampa solo il messaggio finale
   if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
   if [ "$UPDATE" -eq 0 ] && [ "$BASE64" -eq 0 ]; then
     local complog=""
     local complog=""
Riga 967: Riga 999:
case "$1" in
case "$1" in
             /etc/fstab)
             /etc/fstab)
                   # Nasconde username,password e dominio di mount cifs
                   # Nasconde username, password e dominio di mount CIFS
                   sed -e "s/\( cifs.*username *= *\)[^,]*/\1\*script-removed\*/" \
                   sed -e "s/\( cifs.*username *= *\)[^,]*/\1\*script-removed\*/" \
                       -e "s/\( cifs.*password *= *\)[^,]*/\1\*script-removed\*/" \
                       -e "s/\( cifs.*password *= *\)[^,]*/\1\*script-removed\*/" \
Riga 1 037: Riga 1 069:
  (iwlist scan | sed -e '/ESSID:.*/{/off\/any/! s/ESSID:.*/ESSID:"*script-removed*"/g}' -e '/^[ ]*IE: Unknown:.*/d') &>> "$log" && _ok || _error
  (iwlist scan | sed -e '/ESSID:.*/{/off\/any/! s/ESSID:.*/ESSID:"*script-removed*"/g}' -e '/^[ ]*IE: Unknown:.*/d') &>> "$log" && _ok || _error
  ;;
  ;;
               # nasconde gli ESSID visualizzati da "nmcli dev list" (solo per Wheezy)
               # nasconde gli ESSID visualizzati da "nmcli dev list" (fino a Wheezy)
               # L'array PIPESTATUS mostra il codice d'uscita dei comandi della pipe. PIPESTATUS[0] è il codice d'uscita di "nmcli dev list" (0=successo)
               # L'array PIPESTATUS mostra il codice d'uscita dei comandi della pipe. PIPESTATUS[0] è il codice d'uscita di "nmcli dev list" (0=successo)
               "/usr/bin/nmcli dev list")
               "/usr/bin/nmcli dev list")
                   nmcli dev list 2>/dev/null | sed -r "s/(^AP[[:digit:]]*\.SSID:[[:space:]]*).*/\1\*script removed\*/" >> "$log" && [ "${PIPESTATUS[0]}" -eq 0 ] && _ok || \
                   nmcli dev list 2>/dev/null | sed -r "s/(^AP[[:digit:]]*\.SSID:[[:space:]]*).*/\1\*script removed\*/" >> "$log" && [ "${PIPESTATUS[0]}" -eq 0 ] && _ok || \
                       ( _error && echo "Comando valido solo per Wheezy" >> "$log" ) ;;
                       ( _error && echo "Comando valido solo per Wheezy" >> "$log" ) ;;
               # nasconde gli ESSID visualizzati da "nmcli device show" (solo per Jessie e superiori)
               # nasconde gli ESSID visualizzati da "nmcli device show" (da Jessie in poi)
               "/usr/bin/nmcli device show")
               "/usr/bin/nmcli device show")
                   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 || \
                   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 || \
Riga 1 054: Riga 1 086:
  if [ -f "$devicemaptempfile" ]; then cat "$devicemaptempfile" >> "$log"; fi && _ok || _error ;;
  if [ -f "$devicemaptempfile" ]; then cat "$devicemaptempfile" >> "$log"; fi && _ok || _error ;;
      *)
      *)
  # per tutti gli altri comandi non specificati sopra l'output del comando è inviato inalterato al log
  # per tutti gli altri comandi non specificati in precedenza, l'output del comando è inviato inalterato al log
  $1 &>> "$log" && _ok || _error
  $1 &>> "$log" && _ok || _error
  esac    
  esac    
Riga 1 281: Riga 1 313:
    
    
     # variabile che contiene l'URL dell'archivio (es. http://ftp.it.debian.org/debian/)
     # variabile che contiene l'URL dell'archivio (es. http://ftp.it.debian.org/debian/)
     indirizzo="$(echo "$linea" | awk '{print $2}')"
     indirizzo="$(awk '{ print $2 }' <<< "$linea")"


     # sostituisce / con \/ (necessario per il successivo sed)
     # sostituisce / con \/ (necessario per il successivo sed)
Riga 1 287: Riga 1 319:


     # release della riga corrente (es. wheezy o testing o sid)
     # release della riga corrente (es. wheezy o testing o sid)
     rel="$(echo "$linea" | awk '{print $3}')"
     rel="$(awk '{ print $3 }' <<< "$linea")"


     # controlla che sia un nome di release valido
     # controlla che sia un nome di release valido
Riga 1 387: Riga 1 419:
== 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.68
:''Nascosti indirizzi MAC delle interfacce wireless''
:''Sovrascrittura del comando cat per evitare che al file di''
:''log venga inviato il contenuto di un file non di testo''
:''Impostata a 'on' l'opzione 'extdebug' per consentire l'espansione''
:''di ARGC per Bash >= 5''
:''Modifiche e correzioni minori''
:[[Utente:S3v|S3v]] 15:00, 23 mag 2020 (CEST)
;1.0.67
;1.0.67
:''Aggiornamento per rilascio di Debian 10 ([[Buster]])''
:''Aggiornamento per rilascio di Debian 10 ([[Buster]])''
Riga 1 396: Riga 1 436:
:''<code>/etc/modules-load.d/</code>, <code>/etc/network/interfaces.d/</code> e il''
:''<code>/etc/modules-load.d/</code>, <code>/etc/network/interfaces.d/</code> e il''
:''file <code>/etc/modules</code>''
:''file <code>/etc/modules</code>''
:''dmesg dello scipt ALSA spostato nello script''
:''dmesg dello script ALSA spostato nello script''
:''Modifiche e correzioni minori''
:''Modifiche e correzioni minori''
:[[Utente:S3v|S3v]] 10:37, 29 giu 2019 (CEST)
:[[Utente:S3v|S3v]] 10:37, 29 giu 2019 (CEST)
6 999

contributi