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

1.0.50
(1.0.50)
Riga 73: Riga 73:


# Versione script
# Versione script
readonly VERSIONE="1.0.49"
readonly VERSIONE="1.0.50"


# Codename per stable e testing. Da modificare nei successivi rilasci di Debian
# Codename per stable e testing. Da modificare nei successivi rilasci di Debian
Riga 1 046: Riga 1 046:
function _extpack {
function _extpack {


  # Variabile che contiene la release attualmente utilizzata
local riga indirizzo rel linea release=""
  # Vengono tolti da sources.list eventuali spazi iniziali e tolte le righe che *non* iniziano con le stringhe
 
  # "deb http://ftp.XX.debian.org" o con
# variabile con il contenuto del file sources.list (solo righe che iniziano con deb
  # "deb ftp://ftp.XX.debian.org" o con
# e che contengono "main" )
  # "deb http://ftp2.XX.debian.org" o con
local sourceslist="$(sed -e '/^deb /!d' -e '/.* main.*/!d' /etc/apt/sources.list)"
  # "deb ftp://ftp2.XX.debian.org" e che *non* contengono un nome di release.
  # Con "cut" viene prelevato il terzo campo (la release voluta)
# variabile che contiene l'output del comando "apt-cache policy"
  local release=$(sed -r -e 's/^ *//' -e '/^deb (http|ftp):\/\/(ftp|ftp2)\...\.debian\.org.*('"$STABLE"' |stable |'"$TESTING"' |testing |sid |unstable )/!d' /etc/apt/sources.list | cut -d ' ' -f3)
local aptcachepol="$(apt-cache policy)"
 
# ciclo sulle righe della variabile "sourceslist"
while read linea; do
 
    # variabile che contiene l'URL dell'archivio (es. http://ftp.it.debian.org/debian/)
    indirizzo="$(echo "$linea" | awk '{print $2}')"
 
    # sostituisce / con \/ (necessario per il successivo sed)
    indirizzo="${indirizzo//\//\\/}"
 
    # release della riga corrente (es. wheezy o testing o sid)
    rel="$(echo "$linea" | awk '{print $3}')"
 
    # controlla che sia un nome di release valido
    if [ "$rel" = "stable" ] || [ "$rel" = "testing" ] || [ "$rel" = "unstable" ] ||
      [ "$rel" = "$STABLE" ] || [ "$rel" = "$TESTING" ] || [ "$rel" = "sid" ]; then
   
      # controlla che sia un repository di Debian
      # si basa sull'output di "apt-cache policy" e su o=Debian e l=Debian
      riga="$(echo "$aptcachepol" | sed -n '/'$indirizzo'.*'$rel'\/main.*Packages$/ {N; /.*o=Debian,.*l=Debian,/p}')"
   
      # se è un archivio valido, aggiorna la variabile "release"
        if [ ! -z "$riga" ]; then
          if [ -z "$release" ]; then
              release="$rel"
          else
              release="$(printf %b "$release\n$rel")"
          fi
        fi
    fi
done <<< "$sourceslist"


  local var="Pacchetti esterni"
local var="Pacchetti esterni"
  _prompt "$var"
_prompt "$var"
 
 
  # Lo script DEVE rilevare almeno una release. Se la variabile "release" è nulla, c'è un errore nei repository
# Lo script DEVE rilevare almeno una release. Se la variabile "release" è nulla, c'è un errore nei in "sources.list"
  # oppure lo script deve essere modificato. Questa situazione accade per indirizzi di repository
# oppure non è stato eseguito un aggiornamento della lista dei pacchetti (update)
  # non previsti (vedere il modo in cui viene ricavata la variabile "release" in alto)
# (vedere anche il modo in cui viene ricavata la variabile "release" in alto)
  if [ -z "$release" ]; then
if [ -z "$release" ]; then
     nome_e_riga "${var} all'archivio \"NON RILEVATO!\""
     nome_e_riga "${var} all'archivio \"NON RILEVATO!\""
     echo "Release non rilevata. Repository errati oppure è necessaria una modifica dello script" >> "$log" && _error
     echo "Release non rilevata. Repository errati oppure è necessaria una modifica dello script" >> "$log" && _error
     return 1
     return 1
  fi
fi


  # Numero di release trovate
# Numero di release trovate
  local num=$(echo "$release" | wc -l)
local num=$(echo "$release" | wc -l)
 
 
  # Se il numero di release è diverso da 1, la funzione termina
# Se il numero di release è diverso da 1, la funzione termina
  if [ "$num" -ne 1 ]; then
if [ "$num" -ne 1 ]; then
    nome_e_riga "$var"
    nome_e_riga "$var"
    echo "Sono presenti ${num} release in sources.list" >> "$log" && _error
    echo "Sono presenti ${num} release in sources.list" >> "$log" && _error
    return
    return
  fi
fi
 
 
  local pkg=""
local pkg=""


  # 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
        "$STABLE"|stable)
    "$STABLE"|stable)
release="stable"
                    release="stable"
pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Astable'  --disable-columns | column -t) ;;
                    pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Astable'  --disable-columns | column -t) ;;
        "$TESTING"|testing)
    "$TESTING"|testing)
release="testing"
                    release="testing"
pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Atesting'  --disable-columns | column -t) ;;
                    pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Atesting'  --disable-columns | column -t) ;;
        sid|unstable)
    sid|unstable)
release="unstable"
                    release="unstable"
pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Aunstable' --disable-columns | column -t) ;;
                    pkg=$(aptitude -F '%p %v %t' search '~S ~i !~Aunstable' --disable-columns | column -t) ;;
  esac
esac


  # Invia al log il contenuto di pkg (se esiste)
# 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
if [ -z "$pkg" ]; then
     echo "Nessun pacchetto esterno installato" >> "$log" && _error
     echo "Nessun pacchetto esterno installato" >> "$log" && _error
  else
else
     echo "$pkg" >> "$log" && _ok
     echo "$pkg" >> "$log" && _ok
  fi
fi
}
}


# --------------------------------------------------------------------------
# --------------------------------------------------------------------------
Riga 1 120: Riga 1 152:
== 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.50
:''Rivista la funzione _extpack (repository Debian''
:''in base al comando "apt-cache policy"''
:[[Utente:S3v|S3v]] 22:37, 22 dic 2014 (CET)
;1.0.49
;1.0.49
:''Aggiunti trap INT e "dpkg-foreign-architectures"''
:''Aggiunti trap INT e "dpkg-foreign-architectures"''
6 999

contributi