| {# |
| # 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 |