aboutsummaryrefslogtreecommitdiff
path: root/sysutils/areca-cli
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2007-12-15 18:37:59 +0000
committerPav Lucistnik <pav@FreeBSD.org>2007-12-15 18:37:59 +0000
commitaa796d0d9a74ec648c2e95fa8b6e0b0e370f8af5 (patch)
tree00852d80c9e73cd19f2f1c744cbb8089cc6ea0a7 /sysutils/areca-cli
parent6ea69d24264871c2ad3ea75f13eb4ace88a96375 (diff)
downloadports-aa796d0d9a74ec648c2e95fa8b6e0b0e370f8af5.tar.gz
ports-aa796d0d9a74ec648c2e95fa8b6e0b0e370f8af5.zip
Notes
Diffstat (limited to 'sysutils/areca-cli')
-rw-r--r--sysutils/areca-cli/Makefile7
-rw-r--r--sysutils/areca-cli/files/407.status-areca-raid.in143
-rw-r--r--sysutils/areca-cli/pkg-plist4
3 files changed, 153 insertions, 1 deletions
diff --git a/sysutils/areca-cli/Makefile b/sysutils/areca-cli/Makefile
index c9fbc0153d92..f71c52342292 100644
--- a/sysutils/areca-cli/Makefile
+++ b/sysutils/areca-cli/Makefile
@@ -7,6 +7,7 @@
PORTNAME= areca-cli
PORTVERSION= ${CLI_VER}.${CLI_REV}
+PORTREVISION= 1
CATEGORIES= sysutils
MASTER_SITES= ftp://ftp.unnet.nl/pub/areca/RaidCards/AP_Drivers/FreeBSD/CLI/ \
ftp://ftp.areca.com.tw/RaidCards/AP_Drivers/FreeBSD/CLI/
@@ -17,7 +18,7 @@ COMMENT= Command Line Interface for the Areca ARC-xxxx RAID controllers
ONLY_FOR_ARCHS= i386 amd64
-PLIST_FILES= sbin/areca-cli
+PERIODICSCRIPT= 407.status-areca-raid
USE_ZIP= yes
NO_BUILD= yes
@@ -25,7 +26,11 @@ NO_BUILD= yes
CLI_VER= 1.5
CLI_REV= 50930
+SUB_FILES+= ${PERIODICSCRIPT}
+
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/cli32 ${PREFIX}/sbin/areca-cli
+ @${MKDIR} ${PREFIX}/etc/periodic/daily
+ ${INSTALL_SCRIPT} ${WRKDIR}/${PERIODICSCRIPT} ${PREFIX}/etc/periodic/daily
.include <bsd.port.mk>
diff --git a/sysutils/areca-cli/files/407.status-areca-raid.in b/sysutils/areca-cli/files/407.status-areca-raid.in
new file mode 100644
index 000000000000..8276457ed8b4
--- /dev/null
+++ b/sysutils/areca-cli/files/407.status-areca-raid.in
@@ -0,0 +1,143 @@
+#!/bin/sh
+#
+# Shows status of areca RAID controllers: arcmsr(4)
+#
+# Authors: Bjoern A. Zeeb
+#
+# $FreeBSD$
+#
+
+# If there is a global system configuration file, suck it in.
+#
+if [ -r /etc/defaults/periodic.conf ]
+then
+ . /etc/defaults/periodic.conf
+ source_periodic_confs
+fi
+
+# Defaults.
+: ${daily_status_arcmsr_raid_enable:=NO}
+# Verbose.
+: ${daily_status_arcmsr_raid_verbose:=YES}
+# SMART.
+: ${daily_status_arcmsr_raid_smart:=YES}
+# Logs persist between "areca-cli event info" invocation?
+: ${daily_status_arcmsr_raid_persist_logs:=YES}
+
+areca_cli=${areca_cli:-%%PREFIX%%/sbin/areca-cli}
+logdir=${logdir:-/var/log}
+
+verbose()
+{
+ local cmd
+ local scmd
+ local log
+ cmd=$1
+ scmd=$2
+ log=$3
+
+ case ${daily_status_arcmsr_raid_verbose} in
+ [Nn][Oo])
+ return
+ ;;
+ *) ;;
+ esac
+
+ ${areca_cli} ${cmd} ${scmd} >> ${log}
+}
+
+smart()
+{
+ local log
+ local disk
+ log=$1
+
+ case ${daily_status_arcmsr_raid_smart} in
+ [Nn][Oo])
+ return
+ ;;
+ *) ;;
+ esac
+
+ for disk in `${areca_cli} disk info | awk '
+ BEGIN { run=0 }
+ { if (/^=======/) {
+ if (run==0) { run=1; } else { run=0; } }
+ else { if (run==1) { printf "%d ", $1; } } };'`; do
+ echo "SMART data for disk ${disk}" >> ${log}
+ ${areca_cli} disk smart drv=${disk} >> ${log}
+ done
+}
+
+case "$daily_status_arcmsr_raid_enable" in
+ [Yy][Ee][Ss])
+ echo
+ echo 'Checking status of Areca RAID controllers:'
+
+ rc=0
+
+ # Checking the currently selected (1st) controller.
+ # XXX TODO set curctrl=[1..4]; along with that
+ # XXX TODO try to only call areca-cli once (per ctrl).
+ echo ""
+ echo "Controller ${ctrl}:"
+ ctrl_log=${logdir}/arcmsr_raid_${ctrl}
+ if test ! -f ${ctrl_log}.today; then
+ touch ${ctrl_log}.today
+ fi
+ mv -f ${ctrl_log}.today ${ctrl_log}.yesterday
+ # Not too efficient to call areca_cli lots of times.
+ verbose sys info ${ctrl_log}.today
+ ${areca_cli} rsf info >> ${ctrl_log}.today
+ verbose vsf info ${ctrl_log}.today
+ verbose disk info ${ctrl_log}.today
+ smart ${ctrl_log}.today
+ verbose hw info ${ctrl_log}.today
+ lines=`wc -l ${ctrl_log}.today | awk '{ print $1 }'`
+ diff -u -$lines ${ctrl_log}.yesterday ${ctrl_log}.today
+ raid_rc=$?
+ if test $raid_rc -eq 0; then
+ cat ${ctrl_log}.today
+ fi
+ [ $rc -eq 0 ] && [ $raid_rc -ne 0 ] && rc=3
+
+ # Checking logs.
+ echo "Logs (most recent first):"
+ logs_log=${logdir}/arcmsr_log_${ctrl}
+ case "$daily_status_arcmsr_raid_persist_logs" in
+ [Yy][Ee][Ss])
+ if test ! -f ${logs_log}.today; then
+ touch ${logs_log}.today
+ fi
+ mv -f ${logs_log}.today ${logs_log}.yesterday
+ ${areca_cli} event info > ${logs_log}.today
+ cmp -zs ${logs_log}.yesterday ${logs_log}.today
+ raid_rc=$?
+ if test $raid_rc -ne 0; then
+ diff -u ${logs_log}.yesterday ${logs_log}.today | \
+ grep -v '^-\|^$'
+ fi
+ ;;
+ *)
+ raid_rc=0
+ ${areca_cli} event info > ${logs_log}.today
+ ${areca_cli} event clear >> ${logs_log}.today
+ lines=`wc -l ${logs_log}.today | awk '{ print $1 }'`
+ if test $lines -gt 4; then
+ cat ${logs_log}.today
+ raid_rc=1
+ fi
+ ;;
+ esac
+ if test $raid_rc -eq 0; then
+ echo " No new alarms."
+ fi
+ [ $rc -eq 0 ] && [ $raid_rc -ne 0 ] && rc=3
+ ;;
+
+ *) rc=0;;
+esac
+
+exit $rc
+
+# end
diff --git a/sysutils/areca-cli/pkg-plist b/sysutils/areca-cli/pkg-plist
new file mode 100644
index 000000000000..8ddb507b84a2
--- /dev/null
+++ b/sysutils/areca-cli/pkg-plist
@@ -0,0 +1,4 @@
+etc/periodic/daily/407.status-areca-raid
+sbin/areca-cli
+@dirrmtry etc/periodic/daily
+@dirrmtry etc/periodic