new: mount-ro check
This commit is contained in:
parent
a707666f36
commit
e1845b1a6b
50
sh/mount-ro-xinetd.sh
Executable file
50
sh/mount-ro-xinetd.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# script for use with xinetd to monitor readonly filesystem
|
||||||
|
#
|
||||||
|
# xinetd config
|
||||||
|
# service fsro
|
||||||
|
#{
|
||||||
|
# disable = no
|
||||||
|
# flags = REUSE
|
||||||
|
# socket_type = stream
|
||||||
|
# type = UNLISTED
|
||||||
|
# port = 3333
|
||||||
|
# wait = no
|
||||||
|
# user = nobody
|
||||||
|
# server = /usr/local/sbin/mount-ro-xinetd.sh
|
||||||
|
# log_on_failure += USERID
|
||||||
|
# only_from = 127.0.0.0/8
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
|
||||||
|
function check_ok() {
|
||||||
|
MSG="$1 healthy"
|
||||||
|
LEN=$((${#MSG} + 2))
|
||||||
|
echo -en "HTTP/1.1 200 OK\r\n"
|
||||||
|
echo -en "Content-Type: text/plain\r\n"
|
||||||
|
echo -en "Connection: close\r\n"
|
||||||
|
echo -en "Content-Length: $LEN\r\n"
|
||||||
|
echo -en "\r\n"
|
||||||
|
echo -en "$MSG\r\n"
|
||||||
|
sleep 0.1
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_fail() {
|
||||||
|
MSG="$1"
|
||||||
|
LEN=$((${#MSG} + 2))
|
||||||
|
echo -en "HTTP/1.1 503 Service Unavailable\r\n"
|
||||||
|
echo -en "Content-Type: text/plain\r\n"
|
||||||
|
echo -en "Connection: close\r\n"
|
||||||
|
echo -en "Content-Length: $LEN\r\n"
|
||||||
|
echo -en "\r\n"
|
||||||
|
echo -en "$MSG\r\n"
|
||||||
|
sleep 0.1
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_PATH=/tmp
|
||||||
|
grep -q $CHECK_PATH /proc/mounts || check_fail "Mount missing: $CHECK_PATH"
|
||||||
|
dd if=/dev/urandom of=$CHECK_PATH/.test01 bs=1M count=10 status=none || check_fail "Write failed: $CHECK_PATH"
|
||||||
|
dd if=$CHECK_PATH/.test01 of=/dev/null bs=1M status=none || check_fail "Read failed: $CHECK_PATH"
|
||||||
|
check_ok "$CHECK_PATH"
|
Loading…
Reference in New Issue
Block a user