new checks
This commit is contained in:
parent
9e5842723d
commit
ade091bf3d
32
check_kernel
32
check_kernel
@ -32,13 +32,14 @@ CRITICAL=2;
|
||||
UNKNOWN=3;
|
||||
|
||||
get_offset() {
|
||||
local file needle
|
||||
local file needle offset
|
||||
|
||||
file="$1"
|
||||
needle="$2"
|
||||
offset="${3:-0}"
|
||||
perl -e '
|
||||
undef $/;
|
||||
$i = index(<>, "'"$needle"'");
|
||||
$i = index(<>, "'"$needle"'", '$offset');
|
||||
if ($i < 0) {
|
||||
exit 1;
|
||||
};
|
||||
@ -125,7 +126,9 @@ get_image_linux() {
|
||||
|
||||
GZHDR1="\x1f\x8b\x08\x00"
|
||||
GZHDR2="\x1f\x8b\x08\x08"
|
||||
LZHDR="\x00\x00\x00\x02\xff"
|
||||
#LZHDR="\x00\x00\x00\x02\xff"
|
||||
LZHDR="\x5d\x00\x00"
|
||||
XZHDR="\xfd7zXZ\x00"
|
||||
|
||||
off=`get_offset "$image" $GZHDR1`
|
||||
[ "$?" != "0" ] && off="-1"
|
||||
@ -143,8 +146,20 @@ get_image_linux() {
|
||||
|
||||
off=`get_offset "$image" $LZHDR`
|
||||
[ "$?" != "0" ] && off="-1"
|
||||
while [ -n "$off" -a "$off" -ne "-1" ] ; do
|
||||
out="$((dd ibs="$off" skip=1 count=0 && dd bs=512k) < "$image" 2>/dev/null | lzcat 2>/dev/null)"
|
||||
if [ -n "$out" ] ; then
|
||||
echo "$out"
|
||||
return
|
||||
fi
|
||||
off=`get_offset "$image" $LZHDR $[off+1]`
|
||||
[ "$?" != "0" ] && off="-1"
|
||||
done
|
||||
|
||||
off=`get_offset "$image" $XZHDR`
|
||||
[ "$?" != "0" ] && off="-1"
|
||||
if [ "$off" -ne "-1" ]; then
|
||||
(dd ibs="$[off-1]" skip=1 count=0 && dd bs=512k) < "$image" 2>/dev/null | lzcat 2>/dev/null
|
||||
(dd ibs="$off" skip=1 count=0 && dd bs=512k) < "$image" 2>/dev/null | xzcat 2> /dev/null
|
||||
return
|
||||
fi
|
||||
|
||||
@ -154,12 +169,19 @@ get_image_linux() {
|
||||
|
||||
searched=""
|
||||
for on_disk in \
|
||||
"/boot/vmlinuz-linux"\
|
||||
"/boot/vmlinuz26"\
|
||||
"/boot/vmlinuz26-lts"\
|
||||
"/boot/vmlinuz-`uname -r`"\
|
||||
"/boot/vmlinux-`uname -r`"\
|
||||
"/boot/kfreebsd-`uname -r`.gz"; do
|
||||
|
||||
if [ -e "$on_disk" ]; then
|
||||
if [ "${on_disk/vmlinu}" != "$on_disk" ]; then
|
||||
if uname -a | grep Ubuntu 1> /dev/null; then
|
||||
on_disk_version="`get_image_linux "$on_disk" | strings | grep 'Linux version' | head -n1|sed -e 's/ ([^(]*)$//'`"
|
||||
[ -z "$on_disk_version" ] || break
|
||||
fi
|
||||
on_disk_version="`get_image_linux "$on_disk" | strings | grep 'Linux version' | head -n1`"
|
||||
[ -z "$on_disk_version" ] || break
|
||||
on_disk_version="`cat "$on_disk" | strings | grep 'Linux version' | head -n1`"
|
||||
@ -183,7 +205,7 @@ if [ "$(uname -s)" = "Linux" ]; then
|
||||
running_version="`cat /proc/version`"
|
||||
if [ -z "$running_version" ] ; then
|
||||
echo "UNKNOWN: Failed to get a version string from running system"
|
||||
exit $UNKNOWN
|
||||
#exit $UNKNOWN
|
||||
fi
|
||||
|
||||
if [ "$running_version" != "$on_disk_version" ]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user