В настоящее время я работаю над проектом, в котором мне нужно обновить несколько систем, которые не подключены к inte rnet. Каждый пакет rpm, который мне нужно вручную загружать и устанавливать / обновлять в каждой системе.
Я пытаюсь создать скрипт, который будет проверять, установлена ли более старая версия пакета и будет ли она выполняться обновление. В противном случае перейдите к следующему пакету (я только обновляю пакет, а не устанавливаю новые.)
Вот то, что у меня есть в настоящее время. Скрипт ссылается на файл со списком всех пакетов. У меня нет имени пакета для каждого пакета, но у меня есть rpms, поэтому мне любопытно, как я могу сделать правильное сравнение в операторе if, чтобы скрипт выполнял другое действие, если оно истинно.
Рабочий раствор:
IFS="="
while read -r name value
do
if [[ $(rpm -qi ${name//\"/}) == "package ${name//\"/} is not installed" ]]
then
echo "Package ${name//\"/} is not installed, moving on..."
else
if [[ "${value//\"/}" == *"kernel"* ]]
then
rpm -ivh ${value//\"/}
else
rpm -Uvh ${value//\"/}
fi
fi
echo 'Done!'
done < patches.conf >> patching_log.conf
Заранее спасибо!
Ввод:
RHSA-2019:3979(kernel-tools-debuginfo)=kernel-tools-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(kernel-tools-libs)=kernel-tools-libs-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(perf)=perf-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(perf-debuginfo)=perf-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(python-perf)=python-perf-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(python-perf-debuginfo)=python-perf-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:4024(SDL-32)=SDL-1.2.15-15.el7_7.i686.rpm
RHSA-2019:4024(SDL-64)=SDL-1.2.15-15.el7_7.x86_64.rpm