#!/bin/bash
#
#Copyright: 2013, 2014 Instituto Superior Técnico by Goncalo Cruz 
#  <goncalo.cruz@tecnico.ulisboa.pt>
#License: GPL2+ with OpenSSL exception
#

# Nagios return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

#help!
if [ "$1" == "--help" ]; then
  echo "Script para testar a existência de um volume iSCSI montado:"
  echo "Este script assume que um volume iSCSI de teste está montado no próprio "
  echo "servidor que disponibiliza os targets. Se o volume não estiver disponível "
  echo "assume-se que o serviço do target iSCSI está em baixo."
  echo "Aviso: o volume por estar em baixo por o cliente open-iscsi ter sido parado."
  exit 0
fi

# retry iscsi login (because it will fail and quit on boot)
iscsiadm -m node --login

sleep 2

# Test whether iscsi disk is mounted  - test if it is readable
returned=`dd if=/dev/zero of=/dev/disk/by-id/wwn-0x600140592c017b2ad8e45a297e8b2fed bs=1M count=100 2>&1 | tail -n 1`

sleep 2

# logout from the iscsi session
iscsiadm -m node --logout

if [ "${returned:0:4}" == "1048" ]; then
  echo "iSCSI: acessivel"
  exit $STATE_OK
else
  echo "iSCSI: inacessivel"
  exit $STATE_CRITICAL
fi
