new checks

This commit is contained in:
Moritz Rudert (helios) 2013-01-20 18:11:34 +01:00
parent 9e5842723d
commit ade091bf3d

View File

@ -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