Aggiornare i pacchetti vulnerabili di FreeBSD con un piccolo trucco

30 06 2008

Non è niente di che, in realtà; volevo trovare il modo di aggiornare automaticamente tutti i pacchetti che portaudit(1) classifica come vulnerabili, insieme a loro eventuali dipendenze. Questo script sembra assolvere lo scopo: se c’è un modo migliore, fatemelo sapere.

#!/usr/local/bin/bash

# psupgrade: Aggiorna i port rilevati come insicuri da portaudit(1)
# utilizzando portmanager(1).

me=$(basename $0)

awk=$(which awk)
echo=$(which echo)
grep=$(which grep)
pkg_info=$(which pkg_info)
portaudit=$(which portaudit)
portmanager=$(which portmanager)
uniq=$(which uniq)

function perror()
{
        $echo $1 >>/dev/stderr
}

for tool in $awk $echo $grep $pkg_info $portaudit $portmanager $uniq; do
        if [ ! $tool ]; then
                perror "$me: Non è possibile eseguire $me, dal momento che manca uno dei seguenti tool:"
                perror "awk\n\grep\npkg_info\nportaudit\nportmanager\nuniq\n\n".
                perror "Assicuratevi che siano installati in una directory del PATH di sistema prima di rieseguire lo script."
                exit 1
        fi
done

echo "$me: Rilevo quali pacchetti necessitano di un aggiornamento..."
packages=$($portaudit -a | $awk '/Affected package:/ {print $3}' | $uniq -)

if [ ! $packages ]; then
        perror "$me: Sembra che non ci siano pacchetti da aggiornare."
        exit 2
fi

echo "$me: Riferisco i pacchetti ai port d'origine..."
ports=$($pkg_info -o $packages | $awk '/Origin:/ {getline; print}' | $uniq -)

if [ ! $ports ]; then
        perror "$me: Si sono verificati degli errori nel reperire i port da aggiornare."
        exit 3
fi

echo "$me: Lancio $portmanager..."
$portmanager $ports -y

Azioni

Informazione

Lascia un commento

Puoi usare questi tag : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>