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



Commenti recenti