Как точно узнать, какие пакеты имеют обновления безопасности в Ubuntu?

Я пытаюсь получить список пакетов, которые помечены как имеющие «обновления безопасности»

Моя базовая система - Ubuntu 14.04

Например, в Ubuntu 14.04 есть сценарий, который будет перечислять количество доступных обновлений. Его использует динамический motd.

/usr/lib/update-notifier/apt-check

Запуск без аргументов дает разделенный точкой с запятой вывод в stderr, например:

$ /usr/lib/update-notifier/apt-check
60;11   <-- (this is actually standard error)

Для этого скрипта есть флаги «читабельный» и «имена пакетов». Большой! Но «имена пакетов» просто выгружают обновляемые пакеты, они не помещаются в стопки безопасности / не-безопасности.

Как я могу узнать, что находится в «обновлениях безопасности» bucket?

Я пробовал такие вещи, как:

apt-get -s dist-upgrade | grep "^Inst" | grep -i security

Этот не работает для меня.

Я подумываю о том, чтобы разобрать сценарий apt-check и повторно использовать его, но я бы хотел узнайте, есть ли существующее средство для выполнения того, что я хочу, прежде чем я это сделаю.

Обновление

В итоге я изменил скрипт python «/ usr / lib / update-notifier / apt-check» и в основном добавил вывод для печати сведения о пакете всякий раз, когда этот сценарий проверял с помощью функции isSecurityUpgrade (). (Подробности см. В этом сценарии)

1
задан 12 November 2015 в 17:38
1 ответ

РЕДАКТИРОВАТЬ: И мои извинения за то, что я не спрашиваю в комментариях, но я слишком новичок и у меня нет представителя.

Если вы ищете только те, которые поступают из репозиториев безопасности, я используйте приведенный ниже код с cron, чтобы раз в неделю отправлять мне электронные письма с наших неконтролируемых серверов.

#!/bin/bash

#-------------------------------------------------------------------------------------------------#
#- Name....: checkSecurityupdates.sh
#- Notes...:
#-------------------------------------------------------------------------------------------------#

# create fresh securities file each run
grep "-security" /etc/apt/sources.list | sudo grep -v "#" > /etc/apt/security.sources.list
echo "created security specific source list"


# Create the security file list
echo 'n' | apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list >> /root/securities-to-update.txt
echo "created list of security updates"



# What's the mimetype
get_mimetype(){
  # warning: assumes that the passed file exists
  file --mime-type "$1" | sed 's/.*: //'
}


# some variables

from="SecUpdates-Report@example.com"
to="monitor-this-mailbox@example.com"
subject=`hostname`
boundary="ZZ_/afg6432dfgkl.94531q"
body="Please see attached"
declare -a attachments
attachments=( "securities-to-update.txt" )

# Build headers
{

printf '%s\n' "From: $from
To: $to
Subject: $subject
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=\"$boundary\"

--${boundary}
Content-Type: text/plain; charset=\"US-ASCII\"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

$body
"

# now loop over the attachments, guess the type
# and produce the corresponding part, encoded base64
for file in "${attachments[@]}"; do

  [ ! -f "$file" ] && echo "Warning: attachment $file not found, skipping" >&2 && continue

  mimetype=$(get_mimetype "$file")

  printf '%s\n' "--${boundary}
Content-Type: $mimetype
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$file\"
"

  base64 "$file"
  echo
done

# print last boundary with closing --
printf '%s\n' "--${boundary}--"

} | sendmail -t -oi   
echo "sent security updates list"



# cleanup security files
rm /etc/apt/security.sources.list
rm /root/securities-to-update.txt
2
ответ дан 3 December 2019 в 20:45

Теги

Похожие вопросы