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;
|
UNKNOWN=3;
|
||||||
|
|
||||||
get_offset() {
|
get_offset() {
|
||||||
local file needle
|
local file needle offset
|
||||||
|
|
||||||
file="$1"
|
file="$1"
|
||||||
needle="$2"
|
needle="$2"
|
||||||
|
offset="${3:-0}"
|
||||||
perl -e '
|
perl -e '
|
||||||
undef $/;
|
undef $/;
|
||||||
$i = index(<>, "'"$needle"'");
|
$i = index(<>, "'"$needle"'", '$offset');
|
||||||
if ($i < 0) {
|
if ($i < 0) {
|
||||||
exit 1;
|
exit 1;
|
||||||
};
|
};
|
||||||
@ -125,7 +126,9 @@ get_image_linux() {
|
|||||||
|
|
||||||
GZHDR1="\x1f\x8b\x08\x00"
|
GZHDR1="\x1f\x8b\x08\x00"
|
||||||
GZHDR2="\x1f\x8b\x08\x08"
|
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`
|
off=`get_offset "$image" $GZHDR1`
|
||||||
[ "$?" != "0" ] && off="-1"
|
[ "$?" != "0" ] && off="-1"
|
||||||
@ -143,8 +146,20 @@ get_image_linux() {
|
|||||||
|
|
||||||
off=`get_offset "$image" $LZHDR`
|
off=`get_offset "$image" $LZHDR`
|
||||||
[ "$?" != "0" ] && off="-1"
|
[ "$?" != "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
|
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
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -154,12 +169,19 @@ get_image_linux() {
|
|||||||
|
|
||||||
searched=""
|
searched=""
|
||||||
for on_disk in \
|
for on_disk in \
|
||||||
|
"/boot/vmlinuz-linux"\
|
||||||
|
"/boot/vmlinuz26"\
|
||||||
|
"/boot/vmlinuz26-lts"\
|
||||||
"/boot/vmlinuz-`uname -r`"\
|
"/boot/vmlinuz-`uname -r`"\
|
||||||
"/boot/vmlinux-`uname -r`"\
|
"/boot/vmlinux-`uname -r`"\
|
||||||
"/boot/kfreebsd-`uname -r`.gz"; do
|
"/boot/kfreebsd-`uname -r`.gz"; do
|
||||||
|
|
||||||
if [ -e "$on_disk" ]; then
|
if [ -e "$on_disk" ]; then
|
||||||
if [ "${on_disk/vmlinu}" != "$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`"
|
on_disk_version="`get_image_linux "$on_disk" | strings | grep 'Linux version' | head -n1`"
|
||||||
[ -z "$on_disk_version" ] || break
|
[ -z "$on_disk_version" ] || break
|
||||||
on_disk_version="`cat "$on_disk" | strings | grep 'Linux version' | head -n1`"
|
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`"
|
running_version="`cat /proc/version`"
|
||||||
if [ -z "$running_version" ] ; then
|
if [ -z "$running_version" ] ; then
|
||||||
echo "UNKNOWN: Failed to get a version string from running system"
|
echo "UNKNOWN: Failed to get a version string from running system"
|
||||||
exit $UNKNOWN
|
#exit $UNKNOWN
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$running_version" != "$on_disk_version" ]; then
|
if [ "$running_version" != "$on_disk_version" ]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user