blob: 7382621d0323f5b5f938dd051d45645b8e42a77e [file] [log] [blame]
{#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#}
#!/bin/bash
#
#/*
# * Licensed to the Apache Software Foundation (ASF) under one
# * or more contributor license agreements. See the NOTICE file
# * distributed with this work for additional information
# * regarding copyright ownership. The ASF licenses this file
# * to you under the Apache License, Version 2.0 (the
# * "License"); you may not use this file except in compliance
# * with the License. You may obtain a copy of the License at
# *
# * http://www.apache.org/licenses/LICENSE-2.0
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# */
err=0;
function check_disks {
for m in `awk '$3~/ext3/ {printf" %s ",$2}' /etc/fstab` ; do
fsdev=""
fsdev=`awk -v m=$m '$2==m {print $1}' /proc/mounts`;
if [ -z "$fsdev" -a "$m" != "/mnt" ] ; then
msg_="$msg_ $m(u)"
else
msg_="$msg_`awk -v m=$m '$2==m { if ( $4 ~ /^ro,/ ) {printf"%s(ro)",$2 } ; }' /proc/mounts`"
fi
done
if [ -z "$msg_" ] ; then
echo "disks ok" ; exit 0
else
echo "$msg_" ; exit 2
fi
}
function check_link {
snmp=/usr/bin/snmpwalk
if [ -e $snmp ] ; then
$snmp -t 5 -Oe -Oq -Os -v 1 -c public localhost if | \
awk ' {
split($1,a,".") ;
if ( a[1] == "ifIndex" ) { ifIndex[a[2]] = $2 }
if ( a[1] == "ifDescr" ) { ifDescr[a[2]] = $2 }
if ( a[1] == "ifType" ) { ifType[a[2]] = $2 }
if ( a[1] == "ifSpeed" ) { ifSpeed[a[2]] = $2 }
if ( a[1] == "ifAdminStatus" ) { ifAdminStatus[a[2]] = $2 }
if ( a[1] == "ifOperStatus" ) { ifOperStatus[a[2]] = $2 }
}
END {
up=0;
for (i in ifIndex ) {
if ( ifType[i] == 6 && ifAdminStatus[i] == 1 && ifOperStatus[i] == 1 && ifSpeed[i] == 1000000000 ) {
up=i;
}
}
if ( up == 0 ) { print "check link" ; exit 2 }
else { print ifDescr[up],"ok" }
}'
exit $? ;
fi
}
# Run all checks
# Disabled 'check_link' for now...
for check in disks ; do
msg=`check_${check}` ;
if [ $? -eq 0 ] ; then
ok_msg="$ok_msg$msg,"
else
err_msg="$err_msg$msg,"
fi
done
if [ ! -z "$err_msg" ] ; then
echo -n "ERROR $err_msg "
fi
if [ ! -z "$ok_msg" ] ; then
echo -n "OK: $ok_msg"
fi
echo
# Success!
exit 0