Files

22 lines
1.1 KiB
Bash

owner=$(if is_rhel; then rpm -qf --qf '%{NAME}\n' /usr/bin/ssh; else dpkg -S /usr/bin/ssh | cut -d: -f1; fi 2>/dev/null)
h0=$(state_get history)
tree_installed() {
if is_rhel; then dnf history list tree 2>/dev/null | awk -F'|' -v h="${h0:-0}" '$1+0 > h && $4 ~ /Install/' | grep -q .
else tail -n +"$((h0 + 1))" /var/log/apt/history.log | grep -q '^Install: .*\btree:'; fi
}
tree_removed() {
if is_rhel; then dnf history list tree 2>/dev/null | awk -F'|' -v h="${h0:-0}" '$1+0 > h && $4 ~ /Remove|Erase/' | grep -q .
else tail -n +"$((h0 + 1))" /var/log/apt/history.log | grep -Eq '^(Remove|Purge): .*\btree:'; fi
}
task 1 "The package that owns /usr/bin/ssh"
need "/root/lab-answers/1 names the package" '[ -n "$owner" ] && [ "$(answer 1)" = "$owner" ]'
task 2 "tree installed, then removed again"
need "the package history shows tree installed" tree_installed
need "the package history shows tree removed" tree_removed
need "tree is no longer installed" '! pkg_installed tree'
task 3 "bash held back from upgrades"
need "bash is held" 'if is_rhel; then dnf versionlock list 2>/dev/null | grep -q "^bash-"; else apt-mark showhold | grep -qx bash; fi'