diff --git a/Makefile b/Makefile
index 8b0cbbe87b5585eee2635d22473b93428e1787fd..30267b05174dc2c4f4308fcc1bec098b652c453f 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ LIBEXECDIR = /usr/local/nagios/libexec/
 SCRIPTS = check_cups check_glsa check_saned check_lpd check_hddtemp \
 	check_link_status check_true check_lysrdiff check_syslog \
 	check_ping check_enodia_monitored check_hostextinfo \
-	check_hydra check_datorhandbok check_no_server
+	check_hydra check_datorhandbok check_no_server check_iostatE
 
 all:;
 
diff --git a/check_iostatE b/check_iostatE
new file mode 100755
index 0000000000000000000000000000000000000000..b7b15b683724fdf9f0cb113bf2f0adb6dc7f3670
--- /dev/null
+++ b/check_iostatE
@@ -0,0 +1,147 @@
+#!/bin/ksh
+
+PATH=/opt/lysator/bin:/usr/bin:/usr/sbin
+export PATH
+
+RSH=ssh
+GAWK=gawk
+IOSTAT=iostat
+VERBOSE=0
+
+HOST=""
+
+HWARN=2
+HCRIT=4
+
+TWARN=1
+TCRIT=3
+
+SWARN=5
+SCRIT=10
+
+while [ "$1" != "" ]; do
+    case "$1" in
+	-v|--verbose)
+		VERBOSE=1
+		;;
+
+        -H|--host)
+		HOST=$2
+                shift
+                ;;
+
+        -R|--rsh)
+		RSH=$2
+                shift
+                ;;
+
+	-hc|--hard-critical)	
+		HCRIT=$2
+                shift
+		;;
+
+	-hw|--hard-warning)
+		HWARN=$2
+                shift
+		;;
+
+	-tc|--transport-critical)
+		TCRIT=$2
+                shift
+		;;
+
+	-tw|--transport-warning)	
+		TWARN=$2
+                shift
+		;;
+
+	-sc|--soft-critical)
+		SCRIT=$2
+                shift
+		;;
+
+	-sw|--soft-warning)
+		SWARN=$2
+                shift
+		;;
+
+	-h|--help)
+		echo "Usage: $0 [options]"
+		echo "Options:"
+		echo "\t-h  | --help                         Display this message"
+		echo "\t-v  | --verbose                      Verbose (multiline) output"
+		echo "\t-H  | --host <name>                  Host to check (${HOST:-localhost})"
+		echo "\t-R  | --rsh <path>                   Path to 'rsh' (or 'ssh') program ($RSH)"
+		echo "\t-hc | --hard-critical <level>        Hard error critical level ($HCRIT)"
+		echo "\t-hw | --hard-warning <level>         Hard error warning level ($HWARN)"
+		echo "\t-sc | --soft-critical <level>        Soft error critical level ($SCRIT)"
+		echo "\t-sw | --soft-warning <level>         Soft error warning level ($SWARN)"
+		echo "\t-tc | --transport-critical <level>   Transport error critical level ($TCRIT)"
+		echo "\t-tw | --transport-warning <level>    Transport error warning level ($TWARN)"
+		exit 0
+		;;
+
+        -*)     echo "$0: invalid switch: $1"
+                exit 1
+                ;;
+
+        *)      echo "$0: extra arguments: $*"
+                exit 1
+                ;;
+    esac
+    shift
+done
+if [ "$HOST" = "" ]; then
+    CMD="$IOSTAT -En"
+else
+    CMD="$RSH -n $HOST $IOSTAT -En"
+fi
+
+
+exec $CMD | $GAWK -vverbose=$VERBOSE \
+    		-vhcrit=$HCRIT -vhwarn=$HWARN \
+    		-vtcrit=$TCRIT -vtwarn=$TWARN \
+    		-vscrit=$SCRIT -vswarn=$SWARN \
+    '\
+        BEGIN { gtotal=0; ndisks=0; disks=""; ncrit=0; nwarn=0; crits=""; warns="" } \
+	/^c[0-9][0-9]*t[0-9][0-9]*d[0-9][0-9]*/ { dev=$1; serr[dev]=$4; herr[dev]=$7; terr[dev]=$10; vendor[dev]=""; pfa[dev]="" } \
+	/^Vendor:/ { vendor[dev]=$2; product[dev]=$4; rev[dev]=$6; serial[dev]=$9 } \
+	/^Model:/ { vendor[dev]=""; product[dev]=$2; rev[dev]=$4; serial[dev]=$7 } \
+	/^Size:/ { size[dev]=$2 } \
+	/^Media/ { merr[dev]=$3; dnrerr[dev]=$7; nderr[dev]=$10; rerr[dev]=$12 } \
+	/^Illegal/ { \
+    		irerr[dev]=$3; pfa[dev]=$7; \
+		total[dev]=serr[dev]+herr[dev]+terr[dev];
+		if (verbose) \
+    			print dev, "(" product[dev], rev[dev] ")", ":", total[dev], ":", serr[dev], herr[dev], terr[dev], ":", merr[dev], dnrerr[dev], nderr[dev], rerr[dev], irerr[dev], pfa[dev];\
+    		gtotal += total[dev]; \
+		ndisks++; disks=disks " "  dev; \
+    		nsoft+=serr[dev]; nhard+=herr[dev]; ntran+=terr[dev]; \
+		if (herr[dev] >= hcrit) { \
+    			ncrit++; crits=crits " " dev; \
+		} else if (herr[dev] >= hwarn) { \
+    			nwarn++; warns=warns " " dev; \
+    		} else if (terr[dev] >= tcrit) { \
+    			ncrit++; crits=crits " " dev; \
+		} else if (terr[dev] >= twarn) { \
+    			nwarn++; warns=warns " " dev; \
+    		} else if (serr[dev] >= scrit) { \
+    			ncrit++; crits=crits " " dev; \
+		} else if (serr[dev] >= swarn) { \
+    			nwarn++; warns=warns " " dev; \
+    		} } \
+	END { \
+    		if (ncrit > 0) { \
+    			print "CRITICAL -", ncrit+nwarn "/" ndisks, "disks with errors (" nsoft, "soft", nhard, "hard", ntran, "transport):" crits warns; exit 2 \
+    		} else if (nwarn > 0) { \
+    			print "WARNING -", ncrit+nwarn "/" ndisks, "disks with errors (" nsoft, "soft", nhard, "hard", ntran, "transport):" crits warns; exit 1 \
+    		} else { \
+    			print "OK -", ndisks, "disks checked with", gtotal, "errors (" nsoft, "soft", nhard, "hard", ntran, "transport):" disks}} \
+	'
+
+
+#		if (total >= crit) { \
+#		    print "CRITICAL -", dev, ":", total, "errors (soft:" serr, "hard:" herr, "transport:" terr, "med:" merr, "dnr:" dnrerr, "dev:" nderr, "rec:" rerr, "req:" irerr, "pfa:" pfa ")"; exit 2 \
+#		} else if (total >= warn) { \
+#		    print "CRITICAL -", dev, ":", total, "errors (soft:" serr, "hard:" herr, "transport:" terr, "med:" merr, "dnr:" dnrerr, "dev:" nderr, "rec:" rerr, "req:" irerr, "pfa:" pfa ")"; exit 2 \
+#		} else { gtotal+=total; disks++ }} \