20 lines
1.0 KiB
Bash
20 lines
1.0 KiB
Bash
maker=$(dmidecode -s system-manufacturer 2>/dev/null | head -n1 | tr 'A-Z' 'a-z')
|
|
# PCI slots without a driver, without the leading domain (0000:).
|
|
nodriver=$(for d in /sys/bus/pci/devices/*; do [ -e "$d/driver" ] || echo "${d##*/}"; done | sed 's/^0000://')
|
|
# The answer's first words, without a leading domain.
|
|
slots() { awk 'NF {print tolower($1)}' /root/lab-answers/3 2>/dev/null | sed 's/^0000://'; }
|
|
|
|
task 1 "The system manufacturer"
|
|
need "/root/lab-answers/1 names the system manufacturer, $maker" '
|
|
a=$(answer 1); [ -n "$a" ] && { [ "$a" = "$maker" ] || [[ $maker == *"$a"* ]] || [[ $a == *"$maker"* ]]; }'
|
|
|
|
task 3 "PCI devices without a driver"
|
|
if [ -z "$nodriver" ]; then
|
|
need "/root/lab-answers/3 says none" '[ "$(answer 3)" = none ]'
|
|
else
|
|
need "/root/lab-answers/3 lists every PCI device without a driver" '
|
|
[ -n "$(slots)" ] && while read -r s; do slots | grep -qxF "$s" || exit 1; done <<<"$nodriver"'
|
|
need "/root/lab-answers/3 lists only devices without a driver" '
|
|
slots | while read -r s; do grep -qxF "$s" <<<"$nodriver" || exit 1; done'
|
|
fi
|