Логика I может показаться немного запутанным, но я думаю, что он должен улавливать режим отказа.
В основном шаги следующие:
Итак, нам нужно провести несколько тестов перед этим. . Логика была бы такой:
$ tmpmount
с принудительным использованием ext2
mount
вернул код ошибки ==> Перейти к НЕ ОТФОРМАТИРОВАННЫЙ $ tmpmount / lost + found
не существует, то смонтирована нечетная файловая система; не должно произойти, но ... umount
. Goto NOT FORMATTED $ tmpmount / format.complete
не существует, форматирование было прервано; umount
. Перейти к НЕ ФОРМАТИРОВАТЬ umount
==> ФОРМАТИРОВАТЬ, перейти к следующему диску. «НЕ ОТФОРМАТИРОВАННЫЙ» - это 4 исходных шага.
Мы можем сложить эти структуры вместе. В результате диски будут отформатированы только в том случае, если на них нет файла format.complete
.
После форматирования всех дисков вы можете при желании перемонтировать каждый из них и удалить файл format.complete
.
По сути, мы поддерживаем небольшой объем состояния на каждом диске и используем его, чтобы определить, было ли форматирование успешным.
Рассмотрим этот пример Python3
.
Сервер A :
#!/usr/bin/env python3
# coding=utf8
from subprocess import check_call
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
# Restrict to a particular path
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/JRK75WAS5GMOHA9WV8GA48CJ3SG7CHXL',)
# Create server
server = SimpleXMLRPCServer(
('127.0.0.1', 8888),
requestHandler=RequestHandler)
# Register your function
server.register_function(check_call, 'call')
# Run the server's main loop
server.serve_forever()
Сервер B :
#!/usr/bin/env python3
# coding=utf8
import xmlrpc.client
host = '127.0.0.1'
port = 8888
path = 'JRK75WAS5GMOHA9WV8GA48CJ3SG7CHXL'
# Create client
s = xmlrpc.client.ServerProxy('http://{}:{}/{}'.format(host, port, path))
# Call your function on the remote server
s.call(['alarm'])