Хотелось бы получить совет/подсказку по поводу проверки режима подключения ФС: read-write или read-only. Есть старенькая ESX, на которой крутится пару VM. Так вот, не так давно стал замечать, что эти VM все чаще и чаще уходят в read-only режим. Написал маленький скриптик, который пишет тест-файл в каждый RW подмонтированный раздел. Подключил его к Centreon, вызываю через SNMP. Скриптик (а точнее SNMP демон, который этот скриптик вызвал) действительно сказал мне, когда машинка в очередной раз скатилась в RO, но при этом вернул 0 (return code), т.е. я получил сообщение об ошибке (print "CRITICAL: %s I/O error(%s): %s" % (path, errno, strerror)), но при этом статус OK, .т.е. 0 ...хотя из кода видно, что должен был вернуть 2.
Вот у меня вопрос: как именно Nagios/Centreon менят статус своих services? Пишет от сначала return code куда-то на раздел, а потом возврашает это знаение (и если до этого было 0, то после того, как машинка уехала в RO, он не смог перезаписать это значение, то и вернулось старое 0)? Может есть более интеллигентный способ проверки подмонтирования разделов (без запросов к самой ESX)?
Это для python 2.4
Код: Выделить всё
import datetime
import sys, os
def log():
try:
f = open("/var/log/firm_name/check_fs.log", 'w')
f.write(str(datetime.datetime.now()) + "\n")
f.close()
except:
print "WARNING: something goes wrong"
sys.exit(1)
def writing(path):
if path == "/":
path = "/test_file"
else:
path = path + "/test_file"
try:
f = open(path, 'w')
f.write('Read/Write Test\n')
f.close()
os.remove(path)
#-python 2.7
# except IOError as e:
# print "I/O error({0}): {1}".format(e.errno, e.strerror), " : ", path
#-python 2.4
except IOError, (errno, strerror):
print "CRITICAL: %s I/O error(%s): %s" % (path, errno, strerror)
sys.exit(2)
f = open("/etc/mtab", 'r').read()
line = f.split('\n')
for l in line:
l = l.split(" ")
if l[0][0:5] == "/dev/" and l[3].split(',')[0] == "rw":
writing(l[1])
log()
print "OK: filesystem is mounted read-write"Благодарю за ответы.
p.s. да, я знаю, это не лучший мой код (: